Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#47

Re: Maus sperren während Tastatureingabe

  Alt 19. Nov 2008, 23:32
Zuerst brauchst du das:
Delphi-Quellcode:
type
  ULONG_PTR = ^DWORD;

  PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
  TKBDLLHOOKSTRUCT = packed record
    vkCode : DWORD;
    scanCode : DWORD;
    flags : DWORD;
    time : DWORD;
    dwExtraInfo : ULONG_PTR;
  end;
Umsetzung von KBDLLHOOKSTRUCT

Das Gleiche gibt es für die Maus auch MSLLHOOKSTRUCT
(aber nur für WM_MOUSE_LL ab NT4 s.u.)

und dann so
Delphi-Quellcode:
      if
        ( wParam = WM_KEYDOWN )
      then
        begin
          KHSp := PKBDLLHOOKSTRUCT( lParam );
          KHSd := KHSp^;
          if
            not
              (
                ( KHSd.vkCode = 160 ) and ( KHSd.scanCode = 42 ) or // Shift Left
                ( KHSd.vkCode = 162 ) and ( KHSd.scanCode = 29 ) or // Ctrl Left
                ( KHSd.vkCode = 161 ) and ( KHSd.scanCode = 54 ) or // Shift Right
                ( KHSd.vkCode = 163 ) and ( KHSd.scanCode = 29 ) // Ctrl Right
              )
          then
das geht dann, wenn Du den Hook so implementierst:
Delphi-Quellcode:
        KeyboardHookHandle :=
          SetWindowsHookEx(
            WH_KEYBOARD_LL,
            @KeyboardHookProc,
            HInstance,
            0 );
und das geht erst ab NT4.

Vor NT4 musst du WH_KEYBOARD nehmen und dann hast du anhand wParam z.B. VK_xxx abprüfen.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat