Frage

Ich versuche, um zu bestimmen, ob ein Laptop an das Stromnetz angeschlossen ist.

Das OS Im läuft unter WinPE ist. Meine App ist in native C ++ geschrieben.

WMI Win32_Battery-Abfragen werden nicht unterstützt und die GetSystemPowerStatus API gibt immer ‚1‘ für ACLineStatus (läuft auf dem Stromnetz oder nicht).

Irgendwelche Ideen?

Additonal Untersuchung: Gerade versucht die API 'CallNtPowerInformation' mit POWER_INFORMATION_LEVEL :: SystemBatteryState. Das Strukturelement SYSTEM_BATTERY_STATUS AcOnLine kehrt auch 1 unabhängig von Stromversorgungsstatus. Wahrscheinlich ruft nur den gleichen System Level-Code, aber ich dachte, es hier hinzufügen würde.

War es hilfreich?

Lösung

ich es geschafft, meine eigene Frage zu beantworten, und es erwies sich als sehr einfach am Ende sein.

In WinPE folgende noddy Skript zurückgegeben null, wenn ausgeführt, da die Batterie wurde nicht erkannt zu werden:

strComputer = "" Set objWMIService = GetObject ( "winmgmts: \" & strComputer & "\ root \ cimv2") Set colItems = objWMIService.ExecQuery ( "SELECT * FROM Win32_Battery" ,, 48) For Each objItem in colItems     Wscript.Echo objItem.BatteryStatus     Wscript.Echo objItem.Caption Weiter

ich ein Batterie-Gerätetreiber in meinem PE Bild gefunden (\ windows \ inf \ battery.inf), die einmal in Folge erkannt und das obigen Skript in der Batterie installiert werden, um die erwarteten Werte zurück. d.h. Battery = 2 (Das System hat Zugriff auf Wechselstrom, so dass keine Batterie entladen wird) oder Battery = 1 (d.h. die Batterie nicht angeschlossen ist AC Entladen).

Treiber kann in dem PE-Bild selbst oder geladen bei Bedarf installiert werden. das heißt Drvload

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top