Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Saber si esta conectado el adaptador de corriente en una laptop (https://www.clubdelphi.com/foros/showthread.php?t=71310)

javier_ecf 12-12-2010 22:09:57

Saber si esta conectado el adaptador de corriente en una laptop
 
Hola, bueno, tengo rato buscando por la internet como hacer esto, incluso dentro del mismo foro, pero no encuentro nada que me diga como hacerlo.

Explico, necesito saber si el adaptador de corriente o de carga de una laptop, esta conectado o no a la misma.

Gracias.

Neftali [Germán.Estévez] 13-12-2010 10:46:00

1 Archivos Adjunto(s)
Supongo que se debe poder hacer utilizando WMI, pero en estos momentos no puedo probartelo. La clase es Win32_Battery.

Haz la prueba con el DPR que te adjunto y a ver qué resultado devuelve en ambos casos; Conectado y desconectado. Segun el resultado, podemos probar otra cosas.

ecfisa 13-12-2010 11:44:21

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.

javier_ecf 15-12-2010 07:22:59

Gracias, ya lo habia resuelto, disculpen las molestias.

juanlaplata 27-12-2010 16:33:03

Muy bien por ti, y por los que respondieron. pueda tambien que comentes cual fue la solucion que le diste al asunto, si es que es distinta a las propuestas.
Gracias a todos ....

javier_ecf 29-12-2010 02:21:21

Solucion
 
Asi como ecfisa dijo.

kurono 12-01-2011 01:32:01

he probado el codigo y mi antivirus lo reconoce como un virus para poder ejecutarlo debo desativar el antivirus a que se debe eso

ecfisa 13-01-2011 14:49:32

Hola kurono.

Es extraño. El NOD 32 en ningún momento me dió esa alerta, pero no sé que antivirus estés usando...

Supongo que la seguridad del mismo está muy alta y esté tomando la captura del mensaje WM_POWERBROADCAST como un posible intento de ataque. Tal vez puedas configurar el nivel de seguridad en tiempo real o aplicarle una exclusión en el antivirus a la aplicación que estés generando.

Un saludo.

kurono 14-01-2011 00:51:37

el antivirus que uso es el panda 2008 vere si puedo bajar la seguridad a ver que pasa luego te cuento


La franja horaria es GMT +2. Ahora son las 10:57:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi