Einzelnen Beitrag anzeigen

hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#5

AW: Start eines Keyboard-Hooks aus einem Thread

  Alt 10. Sep 2012, 10:03
In der erwähnten Rountine zum 'Abschiessen' des Screen-Savers verwende ich die Komponente wie folgt:
Code:
procedure TForm1.BLKillerExecute(Sender: TObject; Params: Pointer);
var hDeskWnd : HDESK;
var Inp     : TInput;
begin
   hDeskWnd := OpenDesktop('Screen-saver', 0, false, MAXIMUM_ALLOWED);
   if hDeskWnd <> 0 then
      begin
      if SetThreadDesktop(hDeskWnd) then
         begin
         Inp.Itype := INPUT_KEYBOARD;
         Inp.ki.wVk := Ord('A');
         Inp.ki.dwFlags := 0;
         SendInput(1, Inp, SizeOf(Inp));
         Inp.Itype := INPUT_KEYBOARD;
         Inp.ki.wVk := Ord('A');
         Inp.ki.dwFlags := KEYEVENTF_KEYUP;
         SendInput(1, Inp, SizeOf(Inp));
         Application.ProcessMessages;
         Sleep(80);
         end;
      CloseDesktop(hDeskWnd);
      end
   else
      PostMessage(GetForegroundWindow(), WM_CLOSE, 0, 0);
end;
Wenn das geht, heisst das nicht, dass eine Nachrichtenschleife vorhanden ist?
Heinz Schneider
  Mit Zitat antworten Zitat