2009-06-16 7 views
2

J'essaie de déterminer si un ordinateur portable est connecté à l'alimentation secteur.Détection d'une connexion d'alimentation CA dans WinPE?

Le système d'exploitation fonctionnant sous est WinPE. Mon application est écrite en C++ natif.

Les requêtes WMI utilisant Win32_Battery ne sont pas prises en charge et l'API GetSystemPowerStatus renvoie toujours '1' pour ACLineStatus (exécuté sur le courant alternatif ou non).

Des idées?

Enquête supplémentaire: Vous venez d'essayer l'API 'CallNtPowerInformation' avec POWER_INFORMATION_LEVEL :: SystemBatteryState. L'élément de structure SYSTEM_BATTERY_STATUS AcOnLine renvoie également 1 indépendamment de l'état de l'alimentation. Probablement appelle simplement le même code au niveau du système, mais je pensais que je l'ajouterais ici.

Répondre

1

J'ai réussi à répondre à ma propre question et il s'est avéré être très simple à la fin.

Dans WinPE le script suivant noddy retourné null lorsqu'il est exécuté parce que la batterie n'a pas été reconnue:

strComputer = "" Set objWMIService = GetObject ("winmgmts: \" & strComputer & "\ root \ CIMV2") Set colItems = objWMIService.ExecQuery ("SELECT * FROM Win32_Battery" ,, 48) Pour chaque objItem dans colItems Wscript.Echo objItem .BatteryStatus Wscript.Echo objItem.Caption Suivant

J'ai trouvé un pilote de périphérique de la batterie dans mon image PE (\ windows \ inf \ battery.inf) qui, une fois installés ont donné lieu à la batterie d'être reconnu et le script ci-dessus le retour valeurs attendues. c'est-à-dire BatteryStatus = 2 (Le système a accès à l'alimentation CA pour qu'aucune batterie ne soit déchargée) ou BatteryStatus = 1 (La batterie est en train de se décharger, c'est-à-dire AC non connectée). Le pilote peut être installé dans l'image PE elle-même ou chargé à la demande. c'est-à-dire drvload

Questions connexes