Hola.
También se puede usar la función Win Api
GetSystemPowerStatus
Ejemplo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
PowerState: TSystemPowerStatus;
begin
GetSystemPowerStatus(PowerState);
if PowerState.ACLineStatus = 1 then
ShowMessage('Conectada a la red eléctrica')
else
ShowMessage('No conectada a la red eléctrica');
end;
Y si querés detectar el cambio de estado (conectada/desconectada) podés capturar el mensaje
WM_POWERBROADCAST.
Ejemplo:
Código Delphi
[-]
...
type
TForm1 = class(TForm)
...
private
procedure WMPowerBroadCast(var Msg: TMessage); message WM_POWERBROADCAST;
public
end;
...
Interface
...
procedure TForm1.WMPowerBroadCast(var Msg: TMessage);
var
PowerState: TSystemPowerStatus;
begin
if Msg.WParam = $0A then
begin
GetSystemPowerStatus(PowerState);
if PowerState.ACLineStatus = 1 then
ShowMessage('Se ha conectado a la red eléctrica')
else
ShowMessage('Se desconectó de la red eléctrica');
end;
end;
Saludos.