Einzelnen Beitrag anzeigen

Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#9

Re: Aktion auslösen, solange Taste gedrückt wird?

  Alt 9. Okt 2009, 08:02
Ich weiss zwar net wofür du das brauchst, aber versuchs mal mit nem einfachen Keyboardhook.
Delphi-Quellcode:
// Keyboard Hook
const
  WH_KEYBOARD_LL = 13;

var
  HOOK: HHOOK;

function LLKeyboardProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result:= CallNextHookEx(HOOK, nCode, wParam, lParam);
  case wParam of
    WM_KEYDOWN,
    WM_SYSKEYDOWN: begin
                     Form1.i:= Form1.i + 1;
                     Form1.statictext1.Caption:= format('Zahl: %d', [Form1.i]);
                   end;
    WM_KEYUP : begin
                     Form1.i:= 0;
                     Form1.statictext1.Caption:= format('Zahl: %d', [Form1.i]);
                   end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HOOK:= SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyboardProc, hinstance, 0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if HOOK <> 0 then UnhookWindowsHookEx(HOOK);
end;
Aber bedenke das der Hook Programmübergreifend ist. Wenn du die Tasten nur innerhalb deines Programms auwerten möchtest, musst du prüfen ob dein Programm aktuell den Focus hat.
[edit] jetzt sollte es passen
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat