Falls die Warteschleife doch unumgänglich sein sollte, schon mal dran gedacht diese mittels SLeep(1); drin etwas weniger CPU hungrig zu gestalten?
Warum?
Ich mache es anders.
Delphi-Quellcode:
repeat
HwndTarget := FindWindow('Progman', 'Program Manager');
WinProcessMessages;
inc(Counter);
until (HwndTarget <> 0) or (Counter = 30000);
siehe!
Delphi-Quellcode:
procedure WinProcessMessages;
var
ProcMsg: TMsg;
begin
while PeekMessage(ProcMsg, 0, 0, 0, PM_REMOVE) do
begin
if (ProcMsg.message = WM_QUIT) then
Exit;
TranslateMessage(ProcMsg);
DispatchMessage(ProcMsg);
end;
end;
Da ist nichts CPU hungrig.
Alle Messagen werden weiter behandelt und sollten mit einem Sleep nicht unterbrochen werden.
Zitat:
Würdest du dich da registrieren, bekämst do scheinbar automatisch eine Windows Botschaft sobald der Taskbar gestartet wurde
Muss mich da mal schlau machen verstehe immer noch nicht warum ich ein extra Event definieren sollte.