Tutoriale Linux, Tutoriale Programare, Tutoriale retele, tutoriale photoshop

O alternativa API la TTimer-ul din Delphi ar fi crearea unui Waitable Timer, care, cel putin aparent, are o rezolutie mai buna.

Un waitable timer blocheaza executia thread-ului in care e folosit pentru o durata specificata de timp.

Mai jos am pus un exemplu de folosire, in Delphi, a unui asemenea timer.

Cod:

procedure TForm1.WaitableTimer;
const sec = 10000000;
var wTimer, lBusy : Longint;
    interval : LARGE_INTEGER;
begin
  wTimer := CreateWaitableTimer(nil, True, PANSIChar('myWaitableTimer' + IntToStr(GetTickCount)));
  {e o idee buna sa-i dam un nume unic - dar poate avea si nume gol}

  interval.QuadPart :=  - sec * 3; {numarul de secunde}
                                   {valoare negativa = valoare relativa}
                                   {valoare pozitiva = valoare absoluta}

  Repeat
    SetWaitableTimer(wTimer, TLargeInteger(interval), 0, nil, nil, false);
    lBusy := WaitForSingleObject(wTimer, INFINITE);
    If lBusy = WAIT_OBJECT_0 Then
      Begin
        Do_Something; {aici se pune codul care se doreste executat la fiecare X secunde}
        {e o idee buna sa se puna aici si o conditie de terminare a buclei :) }
      End;
  Until False;

  CancelWaitableTimer(wTimer);

  CloseHandle(wTimer);
end;

Happy programming :)

Ethical hacking and programming community