// Innerhalb der eigenen Anwendung kann man überwachen (ähnlich einem Hot-Key),
// ob eine bestimmte Taste gedrückt wurde.

// Getestet mit D4 unter WinME

const 
  KeybHook: Hhook = 0; 
  VirtualKey: integer = 0; 
 
function KeyboardProc(HookCode: Integer; KeyCode: WPARAM; 
  Info: LPARAM): LRESULT; stdcall; 
begin 
  if (HookCode = HC_ACTION) and (KeyCode = VirtualKey) and (Info < 0) then 
  // ----------- irgendwas, z.B.: 
    MessageBox(0, 'Die Taste wurde soeben gedrückt und wieder losgelassen!', 
      'ACHTUNG', MB_ICONINFORMATION); 
  // --------------------------- 
  result := CallNextHookEx(KeybHook, HookCode, KeyCode, Info); 
end; 
 
procedure HookInst(VKey: integer); 
begin 
  if KeybHook <> 0 then exit; 
  if VKey in [1..254] then begin 
    VirtualKey := VKey; 
    KeybHook := SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, 
      HInstance, GetCurrentThreadId); 
  end; 
  if KeybHook = 0 then 
    MessageBox(0, 'Der Keyboard-Hook wurde nicht installiert!', 
      'FEHLER', MB_ICONERROR); 
end; 
 
procedure HookUninst; 
begin 
  if KeybHook <> 0 then UnhookWindowsHookEx(KeybHook); 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  HookUninst; 
end; 
 
 
 
// --- Beispielaufrufe --- 
 
// Taste "a" wird abgefragt 
procedure TForm1.Button6Click(Sender: TObject); 
begin 
  HookInst(ord('A')); 
end; 
 
// TAB-Taste 
procedure TForm1.Button7Click(Sender: TObject); 
begin 
  HookInst(VK_TAB); 
end; 
 
// "5" auf dem abgesetzten Ziffernblock 
procedure TForm1.Button8Click(Sender: TObject); 
begin 
  HookInst(VK_NUMPAD5); 
end;



Zugriffe seit 6.9.2001 auf Delphi-Ecke