每次在运行 Windows 7 的笔记本电脑上插入或拔出外部 LCD 显示器时,我是否可以接收或 Hook 某些事件或通知?
笔记本电脑检测到这一点,并通过某些类型的调整大小或重新定位将我的显示器切换到外部屏幕并返回,但这是否由操作系统公开,以便应用程序可以提供处理程序、附加脚本等?
如果没有,是否有我可以不时轮询的注册表设置或 API?
(我更喜欢编程C + Win32 API)
更新
迈克的回答如下,WM_DEVICECHANGE
带我到RegisterDeviceNotification()
,但到目前为止我正在努力实现它......
更新2
这个问题已经用不同的措辞被问过几次,但在我看来还没有完全回答:
最佳答案
根据this article当显示分辨率更改以及添加或删除显示器时,Windows 会发送 WM_DISPLAYCHANGE
消息。
如果您需要对由于添加或删除显示器而导致的桌面尺寸变化使用react,您可以在此消息的处理程序中执行此操作。 LPARAM
为您提供窗口所在显示器的新分辨率。请注意,如果您使用 100% 以外的任何值进行系统 DPI 缩放,并且您的程序不是 DPI-aware,则该分辨率将会缩放。 .
或者使用EnumDisplayMonitors
函数获取每个连接的显示器的显示分辨率以及显示器在虚拟桌面中的相对位置。无论 DPI 缩放如何,此函数都使用真实设备像素值。
关于winapi - 在 Windows 7 下检测连接或移除的外部显示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5981520/