检测笔记本电脑停靠或未停靠Windows 7+

Detect laptop docked or undocked Windows 7+

本文关键字:停靠 Windows 电脑 检测 笔记本      更新时间:2023-10-16

我有一台运行Windows 7的笔记本电脑,但最终可能会转到Windows 10。我希望有自己的实用程序,可以检测笔记本电脑何时停靠或未停靠,然后更改电源配置文件设置。在Windows标准电源配置文件中,我已经将笔记本电脑设置为电池供电和交流电供电,但我希望笔记本电脑在坞站时的电源计划与仅插入交流适配器而不在坞站时的电源计划不同。

到目前为止,我有一个工作程序,在系统托盘中只有一个小图标启动,当它停靠与未停靠时,它会做出我想要的更改,但是方式我确定笔记本电脑是停靠的,是通过查找特定的硬编码监视器名称我已经连接到我的坞站(例如:当WM_DEVICECHANGE发生时,通过EnumDisplayDevices调用"Samsung U32D970Q"。

主要的问题是,如果我改变显示器,那么程序将停止工作。我可以在启动时将一个参数传递给程序,其中包含要查找的监视器的名称,但我正在试图找出是否有更好的方法。我这样做是不是很傻?

是否有一些Windows 7+的功能,操作系统可以告诉笔记本电脑是否在坞站?

我在判断笔记本电脑是否接通电源时遇到了类似的问题。我的最终目标是将笔记本电脑的电源从坞站连接到智能插头上,并使用谷歌家庭助手通过语音命令打开/关闭笔记本电脑。为了在交流电源恢复时开机,您需要在BIOS中使能"Wake on AC"。问题是当交流电切断时,笔记本电脑仍将依靠电池运行。我需要一种方法,让后台任务在满足这些条件时正确关闭Windows:

1)笔记本电脑电源由交流变为直流

2)笔记本电脑连接到对接站

以上条件确保笔记本电脑在我刚卸载时不会关机。我发现,当笔记本电脑停靠时,设备管理器中会出现额外的设备。我的解决方案是枚举停靠/断开停靠时的所有设备,并将结果保存到两个文本文件中,然后使用windiff对它们进行比较,以查看差异。只需使用一两个"额外设备"的差异来确定笔记本电脑是否已连接。

对于我的戴尔笔记本电脑+坞站设置,"hid投诉*"设备总是在停靠时存在,而在未停靠时丢失。我试过使用CM_Is_Dock_Station_Present和GetCurrentHwProfile,但都没有正确报告码头状态。