Einzelnen Beitrag anzeigen

Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#6

Re: Anwendung beenden während Endlosschleife

  Alt 9. Sep 2008, 10:09
Nun ich hab mich noch ein wenig mit dem Thema befasst und bin zu folgender Lösung gekommen: Ein lokaler Thread!
Das bietet mir den Vorteil, dass sie Tastenkombi nun fürs ganze Programm gültig ist, nicht nur für ein Formular.
Delphi-Quellcode:
Var
  KeyHook : HWND;

Function KeyProc(nCode : Integer;wParam : WPARAM;lParam : LPARAM) : LRESULT; Stdcall;
Begin
  Result:=CallNextHookEx(KeyHook, nCode, wParam, lParam);
  If (nCode >= HC_ACTION) And (wParam = VK_CANCEL) Then
  Begin
    UnHookWindowsHookEx(KeyHook);
    Halt;
  End;
End;

Initialization
  KeyHook := SetWindowsHookEx(WH_KEYBOARD, @KeyProc, 0, GetCurrentThreadId);
Finalization
  if KeyHook <> 0 then
    UnHookWindowsHookEx(KeyHook);
End.
Das Problem mit der Schleife allerdings bleibt. Der lokale Thread scheint während der Schleife nicht aufgerufen zu werden, obwohl das eigentlich meinem Verständnis von Threads widerspricht??? Einen globalen Thread möchte ich hier nicht unbedingt verwenden. Also bleibt mir nur die Möglichkeit mit Application.ProcessMessages in den Whileschleifen.

Aber evtl. weiß ja noch jemand eine andere Lösung...
  Mit Zitat antworten Zitat