Erkennen von Netzanschluss in WinPE?
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.
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