Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=1117&lang=405, vytištěno: 30.04.2025 11:11:30
Hlavní stránka▹Control Web - Ukázkové aplikace▹Tipy | 1.11.2021 |
---|
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. |