Pergunta

Eu estou tentando determinar se um laptop está conectado à alimentação AC.

A sub rodando Mac OS Im é WinPE. Meu aplicativo é escrito em C ++ nativo.

WMI consulta usando Win32_Battery não são suportados ea API GetSystemPowerStatus sempre retorna '1' para ACLineStatus (funcionando com energia CA ou não).

Todas as idéias?

investigação Additonal: Apenas tentou a API 'CallNtPowerInformation' com POWER_INFORMATION_LEVEL :: SystemBatteryState. A estrutura do elemento SYSTEM_BATTERY_STATUS AcOnLine também retorna um independentemente do estado da fonte de alimentação. Provavelmente apenas chama o mesmo código de nível de sistema, mas pensei que eu adicioná-lo aqui.

Foi útil?

Solução

Eu consegui responder a minha própria pergunta e ele provou ser muito simples no final.

Em WinPE o seguinte script noddy retornou nulo quando executado porque a bateria não estava sendo reconhecido:

strComputer = "" Set objWMIService = GetObject ( "winmgmts: \" & strComputer & "\ root \ CIMV2") Set colItems = objWMIService.ExecQuery ( "* SELECT FROM Win32_Battery" ,, 48) Para Cada objItem em colItems Wscript.Echo objItem.BatteryStatus Wscript.Echo objItem.Caption Em seguida

Eu encontrei um driver de dispositivo de bateria na minha imagem PE (\ windows \ inf \ battery.inf) que instalado uma vez resultou na bateria que está sendo reconhecido e o script acima retornando os valores esperados. isto é BatteryStatus = 2 (O sistema tem acesso a AC então nenhuma bateria está a ser descarregada) ou BatteryStatus = 1 (A bateria está a descarregar ou seja AC não ligado).

Driver pode ser instalado na imagem PE si ou carregados sob demanda. ou seja drvload

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top