微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

winapi – 检测在Windows 7下连接或删除的外部显示器

每次从运行 Windows 7的笔记本电脑插入外接LCD监视器或拔下插头时,是否有某些事件或通知我可以接收或挂机?

笔记本电脑检测到这一点并将我的显示切换到外部屏幕并返回某些类型的调整大小或重新定位,但这是否由操作系统公开,以便应用程序可以提供处理程序,附加脚本等?

如果没有,是否有我可以不时轮询的注册表设置或API?

(我更喜欢编程C Win32 API)

UPDATE

Mike的回答如下,WM_DEVICECHANGE让我到了RegisterDeviceNotification(),但到目前为止我正在努力实现它……

更新2

这个问题已被问过几次不同的措辞,但在我看来还没有完全回答:

> How to detect hot plugging of monitor in a win32 application?
> Getting an event on monitor hotplug for windows

根据 this article,Windows在显示分辨率更改时以及添加删除显示时发送WM_disPLAYCHANGE消息.

如果由于添加删除监视器而需要对桌面大小更改做出反应,则可以在此消息的处理程序中执行此操作. LParaM为您提供窗口所在显示的新分辨率.请注意,如果您使用除100%以外的任何其他内容进行系统DPI缩放并且您的程序不是DPI-aware,则此分辨率将被缩放.

或者,使用EnumdisplayMonitors函数获取每个连接的监视器的显示分辨率以及虚拟桌面中监视器的相对位置.无论DPI缩放如何,此功能都使用实际设备像素值.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐