在 WinPE 中检测交流电源连接?

Posted

技术标签:

【中文标题】在 WinPE 中检测交流电源连接?【英文标题】:Detecting AC Power connection in WinPE? 【发布时间】:2009-06-16 14:07:16 【问题描述】:

我正在尝试确定笔记本电脑是否连接到交流电源。

我运行的操作系统是 WinPE。 我的应用是用原生 C++ 编写的。

不支持使用 Win32_Battery 的 WMI 查询,GetSystemPowerStatus API 始终为 ACLineStatus 返回“1”(是否在交流电源上运行)。

有什么想法吗?

补充调查: 刚刚使用 POWER_INFORMATION_LEVEL::SystemBatteryState 尝试了 API 'CallNtPowerInformation'。无论电源状态如何,SYSTEM_BATTERY_STATUS 结构元素 AcOnLine 也返回 1。可能只是调用了相同的系统级代码,但我想我会在这里添加它。

【问题讨论】:

【参考方案1】:

我设法回答了我自己的问题,结果证明它非常简单。

在 WinPE 中,以下 noddy 脚本在执行时返回 null,因为无法识别电池:

strComputer = "." 设置 objWMIService = GetObject("winmgmts:\" & strComputer & "\root\CIMV2") 设置 colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Battery",,48) 对于 colItems 中的每个 objItem Wscript.Echo objItem.BatteryStatus Wscript.Echo objItem.Caption 下一个

我在我的 PE 映像 (\windows\inf\battery.inf) 中发现了一个电池设备驱动程序,该驱动程序安装后会导致电池被识别,并且上述脚本会返回预期值。即 BatteryStatus = 2(系统可以使用交流电,因此没有电池正在放电)或 BatteryStatus = 1(电池正在放电,即未连接交流电)。

驱动程序可以安装在 PE 映像本身中,也可以按需加载。即驱动加载

【讨论】:

以上是关于在 WinPE 中检测交流电源连接?的主要内容,如果未能解决你的问题,请参考以下文章

使用标准信号检测 VM振弦采集模块测量精度修正

如何以编程方式在android中检测设备电源按钮按下两次

如何检测(远程)主机上的某个端口是不是开启

变频电源在使用之前应该做的检测有哪些

openwrt网络检测开吗

iOS - 如何检测电源是不是连接到 iDevice 广告正在充电