2009-06-16 76 views
2

我試圖確定筆記本電腦是否連接到交流電源。在WinPE中檢測AC電源連接?

下面運行的操作系統是WinPE。 我的應用程序是用原生C++編寫的。

不支持使用Win32_Battery進行WMI查詢,並且GetSystemPowerStatus API對於ACLineStatus(不管是否使用交流電源運行)始終返回「1」。

任何想法?

其他調查: 剛剛嘗試了POWER_INFORMATION_LEVEL :: SystemBatteryState的API'CallNtPowerInformation'。無論電源狀態如何,SYSTEM_BATTERY_STATUS結構元素AcOnLine也返回1。可能只是調用相同的系統級代碼,但認爲我會在這裏添加它。

回答

1

我設法回答我自己的問題,最終證明它非常簡單。

在WinPE的當被執行時,因爲電池沒有被識別的以下諾迪腳本返回null:「」

strComputer的= 集objWMIService = GetObject的( 「winmgmts:\」 & strComputer的& 「\根\ CIMV2」) 集colItems的= objWMIService.ExecQuery( 「SELECT * FROM Win32_Battery」 ,, 48) 對於每個objItem在colItems的 Wscript.Echo objItem .BatteryStatus Wscript.Echo objItem.Caption 接着

我發現我的PE圖像的電池裝置的驅動程序(\ Windows \ INF \ battery.inf),其一旦安裝導致電池被識別和上述腳本返回預期值。即BatteryStatus = 2(系統可以訪問AC,因此沒有電池正在放電)或BatteryStatus = 1(電池正在放電,即AC未連接)。

驅動程序可以安裝在PE映像本身或按需加載。即drvload