2015-11-17 12 views

Trả lời

10

này là khá dễ dàng để kiểm tra với Microsoft Spy++. Trong trường hợp của tôi, tôi đã kiểm tra trên Windows 7 x64 với hai màn hình được kết nối và tắt màn hình thứ hai và bật lại.

Khi tháo một màn hình bạn sẽ thấy một WM_DISPLAYCHANGE, nhưng không phải khi thêm một màn hình.

Bạn sẽ thấy WM_DEVICECHANGE với DBT_DEVNODES_CHANGED (sau RegisterDeviceNotification).

Bạn sẽ thấy WM_SETTINGCHANGE cho SPI_SETWORKAREASPI_ICONVERTICALSPACING.

Và bạn sẽ thấy thông điệp đăng ký "UxdDisplayChangeMessage" và "HotplugDetected" (thứ hai người duy nhất khi thêm màn hình). Bạn có thể sử dụng RegisterWindowMessage để nhận số nhận dạng cho các thư này.

+0

Một trường hợp cạnh tôi có thể nghĩ ra được thêm một màn hình được phản ánh màn hình thay vì mở rộng nó. Nó vẫn sẽ nhận được 'SPI_SETWORKAREA' nếu khu vực làm việc không thay đổi? – indiv

+0

@indiv Tôi không biết. Kết quả là từ các bài kiểm tra tôi vừa thực hiện. Bạn có thể dễ dàng kiểm tra chính mình bằng Spy ++. Nếu tôi phải đoán, I'ld mong đợi để xem UxdDisplayChangeMessage, HotplugDetected và WM_DEVICECHANGE, nhưng không WM_DISPLAYCHANGE và WM_SETTINGCHANGE. –

+1

@WernerHenze: Cảm ơn. 'WM_SETTINGCHANGE' với' wParam == SPI_SETWORKAREA' dường như thực hiện thủ thuật để thêm và loại bỏ các màn hình trên tất cả các hệ điều hành xuống XP. Tôi không chắc chắn về phần còn lại của các giải pháp đề xuất của bạn mặc dù. Nếu Spy ++ cho thấy một cái gì đó, nó không có nghĩa rằng đó là một cách tiếp cận tài liệu. – c00000fd

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