检测笔记本电脑停靠或未停靠Windows 7+
Detect laptop docked or undocked Windows 7+
我有一台运行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,但都没有正确报告码头状态。
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 在Windows中以.exe的形式运行c++
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 无法在windows控制台中为C++程序提供必要的输入
- 在Windows中查找扬声器输出的当前音量级别
- Windows.h与GLFW.h的接口
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- Active Directory:从网络服务帐户下运行的Windows服务调用ADsOpenObject时失败
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 检测笔记本电脑停靠或未停靠Windows 7+