Wer als Anfänger auf diesen Thread kommt, wird am Ende völlig verwirrt sein.
Abschliessend Beispiele, die bei mir funktionieren
- Console(Memo1-Befehle durch WriteLn ersetzen) +
VCL - (WIN8.1, XE7):
Delphi-Quellcode:
procedure MyTimer(hWnd: HWND; uMsg: Integer; idEvent: Integer; dwTime: Integer);
stdcall;
begin Form1.Memo1.Lines.Add('
Timer Event: '+ INTTOSTR(idEvent));
WinApi.Windows.Beep(1800,50);
end;
// global var id1, id2, id3 : DWORD;
procedure TForm1.Button11Click(Sender: TObject);
begin
if id1=0
then id1 := SetTimer(0, 1, 1000, @MyTimer); Memo1.Lines.Add(INTTOSTR(id1));
//1000msec
if id2=0
then id2 := SetTimer(0, 1, 2000, @MyTimer); Memo1.Lines.Add(INTTOSTR(id2));
//2000msec
if id3=0
then id3 := SetTimer(0, 1, 3000, @MyTimer); Memo1.Lines.Add(INTTOSTR(id3));
//3000msec
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
KillTimer(0, id1); Memo1.Lines.Add(INTTOSTR(id1)); id1:=0;
KillTimer(0, id2); Memo1.Lines.Add(INTTOSTR(id2)); id2:=0;
KillTimer(0, id3); Memo1.Lines.Add(INTTOSTR(id3)); id3:=0;
end;
Code wegen #51 korrigiert.