Я понимаю, что это должно быть похоже на следующий код:
[Code]
type
TSystemPowerStatus = {???};
function GetBattery(SYSTEM_POWER_STATUS: TSystemPowerStatus): Boolean;
external '[email protected] stdcall';
procedure ShowBatteryStatus();
var
PowerStatus: TSystemPowerStatus;
State: String;
begin
GetBattery(PowerStatus);
State := IntToStr(PowerStatus.BatteryLifePercent);
MsgBox(format('Battery Precents: %p',[State]), mbInformation, MB_OK);
end;
function InitializeSetup: Boolean;
begin
ShowBatteryStatus()
Result := True
end;
Но я не смог найти правильный тип для TSystemPowerStatus
.
Тип struct
не распознан.
Может кто-нибудь помочь с этим?
Благодарю вас!
Это сработало для меня:
[Code]
type
TSystemPowerStatus = record
ACLineStatus : Byte;
BatteryFlag : Byte;
BatteryLifePercent : Byte;
Reserved1 : Byte;
BatteryLifeTime : DWORD;
BatteryFullLifeTime : DWORD;
end;
function GetSystemPowerStatus(var SYSTEM_POWER_STATUS: TSystemPowerStatus): Boolean;
external '[email protected] stdcall';
procedure ShowBatteryStatus();
var
PowerStatus: TSystemPowerStatus;
State: String;
begin
PowerStatus.ACLineStatus := 0;
PowerStatus.BatteryFlag := 0;
PowerStatus.BatteryLifePercent := 0;
PowerStatus.Reserved1 := 0;
PowerStatus.BatteryLifeTime := 0;
PowerStatus.BatteryFullLifeTime := 0;
if (GetSystemPowerStatus(PowerStatus)) then
begin
State := IntToStr(PowerStatus.BatteryLifePercent);
MsgBox(format('Battery Precents: %s',[State]), mbInformation, MB_OK);
end
else begin
MsgBox(SysErrorMessage(DLLGetLastError), mbError, mb_Ok);
end;
end;
function InitializeSetup: Boolean;
begin
ShowBatteryStatus()
Result := True
end;
И еще вопрос: действительно ли запись заменяет тип структуры в паскале?
Работает отлично! Спасибо @mirtheil. Кстати, а почему я должен устанавливать значение свойства TSystemPowerStatus в начале функции? Работает и без него.