Tôi đang cố gắng để có được kích thước của máy tính để bàn Windows (toàn bộ điều, không chỉ là một màn hình duy nhất) từ bên trong một dịch vụ mà tôi đã viết.Nhận kích thước màn hình nền từ Dịch vụ Windows?
Trong WinForms - tiêu chuẩn C# phương pháp:
SystemInformation.VirtualScreen.Width
SystemInformation.VirtualScreen.Height
dường như làm việc (nếu bạn nhập Winforms DLL, mà tôi muốn tránh) - nhưng nó trả về giá trị sai. Kích thước máy tính để bàn là 2048x768
(2 màn hình), nhưng dịch vụ báo cáo 1024x768
(có lẽ nó chỉ chọn lên trên một trong các màn hình.)
Kiểm tra tùy chọn cho dịch vụ tương tác với máy tính để bàn không có hiệu lực.
Mọi suy nghĩ?
Edit:
Các giải pháp được đăng tại C#: Get complete desktop size? không làm việc bên trong của một dịch vụ. Tất cả đều báo cáo sai giá trị.
Điều thú vị là, nó có vẻ như giá trị được báo cáo khác nhau và là không có liên quan đến kích cỡ màn hình thực tế (một số máy báo cáo 800x600
mặc dù một màn hình duy nhất trên máy tính mà là một độ phân giải cao hơn nhiều.)
Vì vậy, - còn ý tưởng nào nữa không? Việc bỏ đăng ký và/hoặc vào dòng lệnh là OK. Hạn chế duy nhất là tôi không thể khởi chạy một ứng dụng winforms để tìm ra nó.
Cậu đưa vào tài khoản thực tế là các dịch vụ có thể được chạy trên một hệ thống không đầu? Hoặc đơn giản là không có người dùng nào đăng nhập? – Dmitry
Tôi hy vọng http://stackoverflow.com/questions/1317235/c-get-complete-desktop-size này sẽ giúp bạn. –
Tôi nên làm rõ. Hệ thống không đầu không phải là một mối quan tâm trong thiết lập này. Thứ hai, tôi gắn vào sự kiện đăng nhập - vì vậy tôi biết khi nào cố gắng tìm ra kích thước máy tính để bàn (chỉ sau khi ai đó đăng nhập.) – debracey