Global Keyboard Hook



  • Hi
    Ich möchte Systemweit für eine bestimme zeit (zb 1 min) jede Keyboardeingabe unterbinden. Hat jemand da n Quelltext für?

    mfg

    PS: Das ultimate wäre, wenn man denn hook mit einer bestimmten tastenkombination schon früher ausschalten kann.



  • Für Hooks gibt es genug bsp. Ich glaube hier im Faq ist eins ansonsten mal bei CodeProject suchen da ist auf jeden ein Bsp. drinn.

    MfG schirrmie



  • Ic3Hawk schrieb:

    PS: Das ultimate wäre, wenn man denn hook mit einer bestimmten tastenkombination schon früher ausschalten kann.

    Strg+Alt+Entf z.B.? 😉



  • MEIN GOTT, ich hab dir doch schon in deinem Vorgängerthread gesagt, wo du den Keyboard Hook findest 😡 Warum machst du dann einen zweiten Thread auf ??? Lies doch mal was ich dir geschrieben habe !

    Achja, du könntest dich wenigstens bedanken, wenn ich dir extra schon schreibe wie du den Hintergrund änderst, und in den Vollbildmodus schaltest 👎

    MfG mikey.



  • 1. Sry das ich mich nicht bedankt hab.
    2. ich hab das forum nach keyboard hook durchsucht, aber nichts gefunden mit dem ich das programieren kann.

    mfg



  • 2. ich hab das forum nach keyboard hook durchsucht, aber nichts gefunden mit dem ich das programieren kann.

    Nimm den Code:

    #include <iostream>
    #include <windows.h>
    #include <winable.h>
    
    int main ()
    {
        std::cout<<"Block:"<<std::endl;
        BlockInput (true);
        Sleep (5000);
        BlockInput (false);
    }
    

    Hier hast du auch den Vorteil, dass du mittels Strg+Alt+Entf die Blockade einfach rausnehmen kannst.

    [EDIT: Hat sich wohl erledigt ....]

    MfG mikey.



  • Ich such schon wie ein doofer, finde aber immer nur keyboard hook für bestimmte tasten, ich will aber alle tasten abschalten Strg Alt und co eingeschlossen .

    mfg

    (Da ist mir jeamand um 10 seks zuvor gekommen 👍 )



  • Wenn du STRG+ALT+ENTF auch deaktivieren möchtest, dann ist es am besten wenn du einfach den Taskmanager nicht anzeigen lässt. Hierfür musst du den folgenden Schlüsselwert auf 1 setzen. Um ihn wieder zu aktiveren wieder auf 0. Hier der Schlüssel:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
    Policies\System\DisableTaskMgr:DWORD
    

    Ein Beispiel zum ändern der Values findest du hier:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39373.html

    [EDIT:] Falls der Schlüssel nicht vorhanden ist (guckst einfach mal mit dem regedit) dann musst du einen erstellen. Aber auch das wird alles im FAQ Beitrag erklärt. Wiegesagt, dein Vorhaben ist nicht gerade eine Anfängerübung, und du wirst dich recht schwer tun damit. Ich habe auch keinen vollständigen Code da, ich kann dir nur sagen was du tun musst 😉

    [EDIT:] Hab einen super Beispielcode dazu bei Codeproject gefunden, du musst ihn nur einbisschen anpassen:

    #include <windows.h>
    
    int EnableDisableTaskMngr (BOOL bEnableDisable)
    {
    #define KEY_DISABLETASKMGR  "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
        #define VAL_DISABLETASKMGR  "DisableTaskMgr"
    
        HKEY    hKey;
        DWORD   val;
    	LONG	r;
    
        if (RegOpenKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
            if (RegCreateKey(HKEY_CURRENT_USER, KEY_DISABLETASKMGR, &hKey) != ERROR_SUCCESS)
    			return 0;
    
        if (bEnableDisable) // Enable
        {
            r = RegDeleteValue(hKey, VAL_DISABLETASKMGR);
        }
        else                // Disable
        {
            val = 1;
            r = RegSetValueEx(hKey, VAL_DISABLETASKMGR, 0, REG_DWORD, (BYTE *)&val, sizeof(val));
        }
    
        RegCloseKey(hKey);
    
        return (r == ERROR_SUCCESS ? 1 : 0);
    }
    
    int main ()
    {
        EnableDisableTaskMngr (false);
    }
    

    Hier der Link:

    http://www.codeproject.com/win32/AntonioWinLock.asp

    MfG mikey.



  • @mikey: Die Lösung mit dem Task-Manager ist aber ein bisschen 'dirty'. Wenn man in diesem Thread überhaupt davon sprechen kann.

    @Ic3Hawk: Siehe ➡ KeyboardHook (FAQ)



  • @mikey: Die Lösung mit dem Task-Manager ist aber ein bisschen 'dirty'. Wenn man in diesem Thread überhaupt davon sprechen kann.

    Klar, da gebe ich dir Recht, wobei diese Methode um ein vielfaches einfacher ist als die SAS subzuclassen 😛 Naja der Nachteil an dem Code ist, dass eine Fehlermeldung von Windows ausgegeben wird, sobald man versucht den Taskmanager aufzurufen.

    MfG mikey.


Anmelden zum Antworten