Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=1117&lang=405, vytištěno: 29.11.2021 13:28:13

Hlavní stránkaControl Web - Ukázkové aplikaceTipy

Control Web 8 - Jak zjistit stav baterie notebooku
 Příklad ukazuje, jak využít funkcí PowerShellu pro získání systémových informací - v tomto případě zjištění stavu baterie

Control Web nabízí v zabudovaném přístroji system OCL proceduru ExecuteProgram, která umožňuje vnořené vykonání programu operačního systému (aplikace, řádkové příkazu, dávky). Volaný program je spuštěn, načež na ukončení jeho vykonávání systém Control Web počká. Dokud takto volaný program neskončí, nepokračuje procedura volající tuto funkci ve své činnosti (a tedy nepracuje ani jiná část aplikace). Účelem funkce je volání cizího programu, aby přitom bylo zaručeno, že program doběhl. Právě této funkčnosti lze využít pro získání informací vracených funkcemi skriptovacího jazyka prostředí PowerShell. Konkrétně si to budeme demonstrovat na zjištění stavu baterie notebooku pomocí příkazu (Get-WmiObject win32_battery).BatteryStatus.

Kód procedury může vypadat například takto:

procedure GetBatteryStatus( var Status : cardinal; var Description : string ): boolean;
var
  Line       : string;
  StdInput   : string;
  StdOutput  : string;
  ErrorCode  : longcard;
begin
   if system.ExecuteProgram( 'Powershell.exe', '-command "(Get-WmiObject win32_battery).BatteryStatus"' , StdInput, StdOutput, ErrorCode ) then
    Line = item( StdOutput, CRLF, 0 );
    Status = Line:value_real;
    switch Status of
    case 1;  Description = 'Battery Power';
    case 2;  Description = 'AC Power';
    case 3;  Description = 'Fully Charged';
    case 4;  Description = 'Low';          
    case 5;  Description = 'Critical';
    case 6;  Description = 'Charging';
    case 7;  Description = 'Charging and High';
    case 8;  Description = 'Charging and Low';
    case 9;  Description = 'Charging and Critical';
    case 10; Description = 'Undefined';
    case 11; Description = 'Partially Charged';
    else     Description = 'Unknown'; Status = -1;
    end; 
    return true;
  else
    return false;
  end;
end_procedure;

Podobně lze získat i informaci o stavu nabití baterie notebooku nebo jiné informace.

Kód procedury pro zjištění stavu nabití baterie pomocí příkazu (Get-WmiObject win32_battery).estimatedChargeRemaining

procedure GetEstimatedChargeRemaining( var Value : real ): boolean;
var
  Line       : string;
  StdInput   : string;
  StdOutput  : string;
  ErrorCode  : longcard;
begin
  if system.ExecuteProgram( 'Powershell.exe', '-command "(Get-WmiObject win32_battery).estimatedChargeRemaining"' , StdInput, StdOutput, ErrorCode ) then
    Line = item( StdOutput, CRLF, 0 );
    Value = Line:value_real;
    return true;
  else
    return false;
  end;
end_procedure;

Další informace o třídě Win32_Battery jsou dostupné na stránkách firmy Microsoft zde.

Můžete si stáhnout i ukázkovou aplikaci GetBatteryInfo.