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)
-   -   ¿Tiempo de suspensión de Windows? (https://www.clubdelphi.com/foros/showthread.php?t=93707)

davidelkata 24-01-2019 09:35:47

¿Tiempo de suspensión de Windows?
 
Buenos días,

¿Tengo alguna manera de controlar el tiempo que ha estado suspendido un ordenador?

Muchas gracias y un saludo

David Sañudo

ecfisa 24-01-2019 17:49:48

Hola.

No se puede controlar el tiempo transcurrido, pero la función API CallNtPowerInformation te permitirá conocerlo.

Ejemplo:
Código Delphi [-]
...
implementation

function CallNtPowerInformation(InformationLevel: DWORD; InPutBuffer: Pointer;
  InputBufferSize: ULONG; OutPutBuffer: Pointer;
  OutPutBufferSize: ULONG): DWORD; stdcall; external 'PowrProf.dll';

const
  LastWakeTime  = 14;
  LastSleepTime = 15;
  STATUS_BUFFER_TOO_SMALL = $C0000023;
  STATUS_ACCESS_DENIED    = $C0000022;

procedure TForm1.Button1Click(Sender: TObject);
  procedure CheckError(const Error: DWORD);
  begin
    if Error = STATUS_BUFFER_TOO_SMALL then
      raise Exception.Create('Buffer muy chico para contener la entrada.');
    if Error = STATUS_ACCESS_DENIED then
      raise Exception.Create('Acceso denegado');
  end;

var
  Lst, Lwt  : Int64;   // unidad 100 nanosegundos.
  Err  : DWORD;
begin
  Err := CallNtPowerInformation(LastWakeTime, nil, 0, @Lwt, SizeOf(Lwt));
  CheckError(Err);

  Err := CallNtPowerInformation(LastSleepTime, nil, 0, @Lst, SizeOf(Lst));
  CheckError(Err);

  ShowMessageFmt('%d nanosegundos.',[Round(Lwt/100) - Round(Lst/100)]);
end;

Saludos :)

dec 25-01-2019 10:14:09

Hola a todos,

Otra estupenda respuesta del compañero ecfisa. ¡Hasta en nanosegundos! :D :)

Casimiro Notevi 25-01-2019 10:30:10

Cita:

Empezado por dec (Mensaje 530435)
Otra estupenda respuesta del compañero ecfisa. ¡Hasta en nanosegundos! :D :)

Es un crack|un monstruo|un #1 ^\||/^\||/^\||/

davidelkata 06-02-2019 12:18:54

Muchas gracias por la respuesta
 
Muchas gracias, lo pruebo para ver si me sirve

Un saludo a todos


La franja horaria es GMT +2. Ahora son las 09:30:02.

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