Tastaturanschläge zählen?



  • hi,
    ich wollte mich mal mit dem Hooks auseinandersetzen und dadurch mal die tastenanschläge zählen. Ich habe bereits nach einigen Tuts das ganze versucht, jedoch schaffe ich es nicht. Muss wohl was im Code falsch sein, wäre nett, wenn ihr mir helfen könntet.
    Mein Code:

    #include <Windows.h>
    #include <stdio.h>
    #include <conio.h>
    
    bool InitHook();
    unsigned int keystrokes;
    HHOOK Hook;
    LRESULT CALLBACK KeyboardHookProc(int Code, WPARAM wParam, LPARAM lParam)
    {
    	keystrokes++;
    	return(CallNextHookEx(Hook, Code, wParam, lParam));
    }
    
    int main(int argc,char* argv[])
    {
    	printf("Press any key to start!\n");
    	system("pause >nul");
    	printf("Init\n");
    	if(!InitHook())
    	{
    		printf("Failure\n!");
    		return 1;
    	}
    	return 0;
    }
    
    bool InitHook()
    {
    	int key = 0;
    	Hook = SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardHookProc,0,GetCurrentThreadId());
    	while(key != 27)
    	{
    		if(kbhit())
    		{
    			key = getch();
    		}
    		printf("%i\r",keystrokes);
    	}
    	return true;
    }
    


  • Das -IST - C!!!

    http://www.c-plusplus.net/forum/f10

    Poste das da.



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Upps, tut mir leid!
    Danke.
    Ist ja jetzt verschoben.



  • push



  • http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx

    Solltest Du Dir zu gemüte führen! Stehen sehr nützliche Info's drin...

    Desweiteren sollte dies

    Hook = SetWindowsHookEx(WH_KEYBOARD_LL,KeyboardHookProc,0,GetCurrentThreadId());
    

    so ausehen

    SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(0), 0);
    

    Denn du möchtest ja...

    dwThreadId [in]

    Type: DWORD

    The identifier of the thread with which the hook procedure is to be associated. ->>> If this parameter is zero, the hook procedure is associated with all existing threads running in the same desktop as the calling thread.

    nehme ich einfach mal an.



  • Danke für die Antwort.
    Ich habe bereits bei MSDN ne Meange gelesen, jedoch hilft dein Vebesserungsvorschlag nicht.



  • nn9_nn schrieb:

    Danke für die Antwort.
    Ich habe bereits bei MSDN ne Meange gelesen, jedoch hilft dein Vebesserungsvorschlag nicht.

    Dann hast Du das auch gelesen?!?

    This hook is called in the context of the thread that installed it. The call is made by sending a message to the thread that installed the hook. Therefore, the thread that installed the hook must have a message loop.

    Nah 💡

    while(GetMessage(0, 0, 0, 0));
    

    vielleicht sowas?

    Ich bezweifle auch stark das du die Tastenschläge zählen möchtest...



  • Vielen Dank mit dem GetMessage loop geht es.

    -lowbyte- schrieb:

    Ich bezweifle auch stark das du die Tastenschläge zählen möchtest...

    Es geht mir um Übungszwecke. Ich will Hooking lernen, sowohl Messages, als auch irgendwelche Funktionen, das mit dem Tastenanschläge zählen ist mehr oder weniger die Überürüfung, ob dass ganze geht.
    Wenn ich nen Keylogger schreiben wollte, würde ich ganz schnell welche finden, falls du das meinst.



  • nn9_nn schrieb:

    Wenn ich nen Keylogger schreiben wollte, würde ich ganz schnell welche finden, falls du das meinst.

    Ja dann zeig mal welche du findest. Die meisten werden nämlich von den gängigen Virenscanneren als solche erkannt und sind somit ziemlich nutzlos. Darum schreib ich mir meine Bedarfsbezogen selbern.



  • daHooka schrieb:

    nn9_nn schrieb:

    Wenn ich nen Keylogger schreiben wollte, würde ich ganz schnell welche finden, falls du das meinst.

    Ja dann zeig mal welche du findest. Die meisten werden nämlich von den gängigen Virenscanneren als solche erkannt und sind somit ziemlich nutzlos. Darum schreib ich mir meine Bedarfsbezogen selbern.

    Mann kann auch einfach die Bedingungen dafür schafen das solche Keylogger nicht mehr erkannt werden! Und das geht bei allen AV Produkten, und dies wurde getestet.


Anmelden zum Antworten