Aplikacja konsolowa i SetTimer

0

Ma ktoś może pomysł jak w aplikacji konsolowej zaimplementować Timera (za pomocą SetTimer)? Niby to proste ale po utworzeniu SetTimer aplikacja mknie dalej i się kończy a wraz z nią utowrzony Timer... Jeśli zaś po SetTimer damy pętlę (aby program nie kończył się) to timer nie działa...

program Project2;

uses
  Windows,
  SysUtils;

procedure MyTimerProc(hWindow : HWND; uMsg : cardinal; idEvent : cardinal;
dwTime : DWORD); stdcall;
begin
 MessageBox(0, 'timer dziala...', 'timer dziala...' ,0);
end;


var aaa:integer
begin
SetTimer(0, 1, 2000, @MyTimerProc);
// tu program kończy działanie i wraz z nim utworzony timer :(

{chyba że damy pętlę

aaa:=0;
repeat
until aaa=1;

wtedy progs nie kończy działania ale nie działa timer :( }

end.

Zaznaczam że chodzi mi tutaj o timera a nie o wątek ze Sleep. Są jakieś szanse?

0

timer działa na komunikatach. daj w pętli sleep np. 100ms i application.processmessages, a jeśli nie korzystasz z vcl, to

  while GetMessage(Komunikat,0,0,0) do
  begin
     TranslateMessage(Komunikat);
     DispatchMessage(Komunikat);
  end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1