2013-04-28 26 views
6

Tôi không biết .NET framework (4.5) đủ tốt, vì vậy đây là câu hỏi tôi không thể tìm thấy câu trả lời đến.Nhận độ phân giải màn hình trong lớp C# (không có biểu mẫu/wpf/aps.net/...)

Làm cách nào để có độ phân giải màn hình chính khi không hoạt động với các biểu mẫu cửa sổ hoặc bất kỳ môi trường đồ họa nào khác như WPF, Silverlight, ASP.NET, v.v ...? Tôi đang cố gắng để có được độ phân giải trong một thư viện lớp (dll) và vượt qua nó từ đó.

.NET có chức năng như vậy không?

+0

Bạn có thể thêm một tham chiếu đến các cửa sổ dạng ngay cả khi bạn không có một giao diện GUI. Đó có phải là một lựa chọn không? –

+0

http://stackoverflow.com/questions/1317235/c-get-complete-desktop-size?rq=1 – bizzehdee

+0

@SamPlusPlus: Cảm ơn nhưng điều đó không hiệu quả, tôi gặp lỗi khi thêm tham chiếu. – DerpyNerd

Trả lời

10

Mặc dù bạn không làm việc trong môi trường Winforms, nhưng bạn vẫn có thể thêm tham chiếu đến DLL của nó. Thêm tham chiếu đến số System.Windows.Forms.dll có nghĩa là bạn có thể sử dụng:

SystemInformation.VirtualScreen.Width 
SystemInformation.VirtualScreen.Height 
+2

+1: lưu ý rằng [PrimaryMonitorSize] (http://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.primarymonitorsize.aspx) có lẽ phù hợp hơn trong trường hợp này (chỉ các vấn đề cho đa cấu hình -monitor). –

+0

Hey, và cảm ơn ... Tôi đã thử thêm các tài liệu tham khảo trước nhưng bằng cách nào đó nó đã không hoạt động! Tôi quyết định để cho nó một shot nhiều hơn và bây giờ nó làm việc:/Cảm ơn bạn đã đẩy tôi thử lại! – DerpyNerd

1

Đây là những gì bạn cần.

Đã quá muộn nhưng tôi nghĩ nó sẽ hữu ích cho người khác :) Câu trả lời đang sử dụng P/Gọi với SystemMetric.

Bạn có thể nhận kích thước màn hình chính mà không cần thêm tham chiếu đến System.Windows.Forms.dll.

http://pinvoke.net/default.aspx/Enums.SystemMetric

tôi không thích nhập khẩu một dll lớn để sử dụng một phương pháp đơn giản XD

+0

Tôi không chắc chắn, không nhập một DLL cho một hiệu suất tác động chức năng thậm chí nhiều hơn tham chiếu một DLL từ ứng dụng của bạn một lần? Tôi có nghĩa là, tham khảo một DLL đã là một phần của khuôn khổ .NET không làm cho ứng dụng của bạn cồng kềnh hơn nhập khẩu một DLL mỗi khi bạn yêu cầu một chức năng. Tui bỏ lỡ điều gì vậy? – DerpyNerd

+0

Trên thực tế, có nhiều phương thức .NET sử dụng P/gọi để gọi hàm win 32 api. Bạn nên truy cập referencesource.microsoft.com để xem điều đó. Vì vậy, nếu bạn không muốn nhập dll .net, bạn có thể gọi trực tiếp win32 api. Trong trường hợp này, bạn chỉ cần tạo SystemMetric enum với một hoặc hai giá trị để có kích thước màn hình. Sau đó, gọi hàm GetSystemMetrics. –

Các vấn đề liên quan