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

问题描述:

我有一台运行Windows 7的笔记本电脑,但最终可能迁移到Windows 10.我想拥有自己的实用程序,可以检测笔记本电脑是停靠还是未连接,然后更改电源档案设置。我已经准备好在电池供电时按照标准电源窗口配置文件中的AC供电,但笔记本电脑在坞站上时的电源规划方案与插入AC适配器时的电源规划方案相同,不在坞站上。检测笔记本电脑停靠或脱离Windows 7 +

到目前为止,我有只在系统托盘中的小图标启动工作程序,它将使当它停靠与停靠的我想要的变化,但方式我确定笔记本电脑停靠是通过寻找具体的硬编码显示器名称每当发生WM_DEVICECHANGE时,我都通过EnumDisplayDevices调用连接到我的扩展坞(例如“Samsung U32D970Q”)。

主要问题是如果我更换显示器,那么程序将停止工作。我可能传递参数给启动程序与监视器的名称寻找,但我试图找出是否有更好的方法。我是这样傻吗?

有一些Windows 7+功能,操作系统可以告诉笔记本电脑在扩展坞上吗?

+0

如果您的扩展坞提供电源,[请考虑监视交流线路状态。](http://*.com/questions/7355331/check-if-computer-is-plugged-into-ac-power-in-batch - 文件) – user4581301

+0

@ user4581301:谢谢,但我还提供交流电源,当我在家里从电源砖。问题是有一个Windows覆盖的DC案例,但我有两个单独的AC案件,我试图以不同的方式处理。不在码头时,一个来自码头的AC和一个来自电力砖的AC。 这看起来很愚蠢,但我希望大屏幕监视器能够继续工作,以便在我的工作台上显示屏幕保护程序的时间。当我在家时,我希望笔记本电脑的屏幕能够进入睡眠状态,所以当我在主PC上玩游戏或其他东西时,我没有看到它离开我的眼角。 – EJ42

我面临类似的问题,试图确定我的笔记本电脑是否停靠。我的最终目标是将笔记本电脑电源从坞站连接到智能插头,并使用Google Home Assistant使用语音命令打开/关闭笔记本电脑。在交流电源恢复时打开笔记本电脑,您需要在BIOS中启用“Wake On AC”。问题是当交流电被切断时,笔记本电脑仍然使用电池供电。我需要一种方式,一个后台任务来关闭Windows时适当满足这些条件:

1)电源笔记本电脑已经从交流变为直流

2)笔记本电脑入坞至扩展坞

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

对于我的DELL笔记本电脑+扩展坞设置,“HID-Complaint *”设备在停靠时会始终存在,并且在脱离时会丢失。我尝试过使用CM_Is_Dock_Station_Present和GetCurrentHwProfile,但都从未正确报告码头状态。