2009-06-16 17 views
2

ラップトップがAC電源に接続されているかどうかを確認しようとしています。WinPEでAC電源接続を検出していますか?

実行中のOS ImはWinPEです。 私のアプリはネイティブのC++で書かれています。

Win32_Batteryを使用したWMIクエリはサポートされていません。GetSystemPowerStatus APIは、ACLineStatus(AC電源で実行中かどうか)に対して常に1を返します。

アイデア?

追加調査: API 'CallNtPowerInformation'をPOWER_INFORMATION_LEVEL :: SystemBatteryStateで試してみました。 SYSTEM_BATTERY_STATUS構造体の要素AcOnLineは、電源装置の状態に関係なく1も返します。おそらく、同じシステムレベルのコードを呼び出すだけですが、ここにそれを追加すると思います。

答えて

1

私は自分の質問に答えることができ、それは最後に非常に簡単であることが判明しました。 WinPEので

実行時にバッテリーが認識されていなかったため、次のNoddyクラスのスクリプトはnullを返し: ""

strComputer = 設定objWMIService =のGetObject( "winmgmts:\" & strComputer & "\ルートの\ CIMV2") 設定colItems = objWMIService.ExecQuery( "SELECT * FROM Win32_Battery" ,, 48)colItems Wscript.EchoステートメントobjItemの各objItemについては .BatteryStatus Wscript.EchoステートメントobjItem.Caption次に私が認識され、一度取り付けたバッテリーをもたらした私のPEイメージの電池デバイスドライバ(Windowsは\ INF \ battery.inf \)と戻り、上記スクリプトを発見

期待値。すなわち、BatteryStatus = 2(システムはACにアクセスしてバッテリが放電されないため)またはBatteryStatus = 1(バッテリが放電中、すなわちACが接続されていない)である。

ドライバは、PEイメージ自体にインストールすることも、必要に応じてロードすることもできます。すなわちdrvload

関連する問題