Einzelnen Beitrag anzeigen

Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#1

Keyboardhook modifizieren

  Alt 16. Mär 2007, 15:25
Huhu@all!

Folgendes Problem (mal wieder):

Ich hab mal ein bisschen gesucht im Forum wie man bestimmte Windows Tastenkombinationen abfangen kann. Dann bin ich auf den Keyboardhook (siehe Anhang) gestoßen. Der unterbindet alle Tastenkombinationen mit der Windowstaste. Jetzt wollte ich die DLL so modifizieren, dass auch Tastenkombinationen mit ALT und STRG abgefangen werden können (im grunde sollen wirklich ALLE Windowstastenkombinationen außer ALT+STRG+ENTF) abgefangen werden.

Allerdings funktioniert die modifizierte Version hier nicht mehr, bzw die neue Tastenkombination, die gesperrt werden soll, wird nicht gesperrt:

Delphi-Quellcode:
unit WHookInt;

interface
//[...usw...]

        { Example to disable all the start-Key combinations }
        case TPMsg(lParam)^.message of
          WM_SYSCOMMAND: // The Win Start Key (or Ctrl+ESC)
            if TPMsg(lParam)^.wParam = SC_TASKLIST then Kill := True;

//neu hinzugefügt:

         WM_SYSKEYDOWN:
             case ((TPMsg(lParam)^.lParam and $00FF0000) shr 16) of
             VK_F4: // Alt+F4 ==> Close Window

             Kill := True;
            end;
//bis hier

          WM_HOTKEY:
            case ((TPMsg(lParam)^.lParam and $00FF0000) shr 16) of
              VK_D, // Win+D ==> Desktop
              VK_E, // Win+E ==> Explorer
              VK_F, // Win+F+(Ctrl) ==> Find:All (and Find: Computer)
              VK_M, // Win+M ==> Minimize all
              VK_R, // Win+R ==> Run program.
              VK_F1, // Win+F1 ==> Windows Help
              VK_PAUSE: // Win+Pause ==> Windows system properties

                Kill := True;
            end;
        end;
        if Kill then TPMsg(lParam)^.message := WM_NULL;
        Result := CallNextHookEx(MMFData.NextHook, Code, wParam, lParam)
      end;
      UnMapMMF(MMFData);
    end;
    CloseMMF(MMFHandle);
  end;
end;

//[...]
Ich weiß einfach nicht was ich da falsch gemacht habe? Muss ich mir mein VK_F4 irgendwie anders umdefinieren? Kann mir jemand helfen? Das wäre echt klasse!

Beste Grüße und schönes Wochenende!!!
Angehängte Dateien
Dateityp: zip demotip1212_996.zip (26,7 KB, 9x aufgerufen)
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat