Tastatureingaben abfangen



  • Hi,

    könnte mir jemand einen Tipp geben wie ich Tastatureingaben global abfangen kann?

    Danke

    McK



  • Suchfunktion benutzen,
    FAQs gucken,
    DAS finden!



  • Hi,

    erstmal danke für den Link. Ich hab jetzt mal die hookdll.dll erstellt und lass sie im Hauptprogramm mit LoadLibrary laden. Wenn mich jetzt nicht alles täuscht muss ich jetzt die funktion SetupHook per GetProcAddress aufrufen oder?
    Wo und wie muss das GetProcAddress jetzt genau hin?

    Mein Code sieht im Moment so aus:

    #include <windows.h>
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
    
    	HINSTANCE hLib = LoadLibrary("hookdll.dll"); 
    
    	if(hLib == NULL) 
    	{ 
    		MessageBox(NULL,"Fehler: hookdll.dll konnte nicht geladen werden !","error", 0); 
    		return 0; 
    	}
    
    	static TCHAR szAppName[] = TEXT ("Klassenname");
    	HWND         hwnd;
    	MSG          msg;
    	WNDCLASSEX   wndclassex = {0};
    
    	wndclassex.cbSize        = sizeof(WNDCLASSEX);
    	wndclassex.style         = CS_HREDRAW | CS_VREDRAW;
    	wndclassex.lpfnWndProc   = WndProc;
    	wndclassex.cbClsExtra    = 0;
    	wndclassex.cbWndExtra    = 0;
    	wndclassex.hInstance     = hInstance;
    	wndclassex.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
    	wndclassex.hCursor       = LoadCursor (NULL, IDC_ARROW);
    	wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
    	wndclassex.lpszMenuName  = NULL;
    	wndclassex.lpszClassName = szAppName;
    	wndclassex.hIconSm       = wndclassex.hIcon;
    
    	if (!RegisterClassEx (&wndclassex))
    	{
    		MessageBox (NULL, TEXT ("RegisterClassEx fehlgeschlagen!"), szAppName, MB_ICONERROR);
    		return 0;
    	}
    
    	hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, // erweiterter Fensterstil
    						szAppName, // Name der Fensterklasse
    						TEXT ("Fenstertitel"), // Fenstertitel
    						WS_OVERLAPPEDWINDOW, // Fensterstil
    						CW_USEDEFAULT, // X-Position des Fensters                      
    						CW_USEDEFAULT, // Y-Position des Fensters       
    						CW_USEDEFAULT, // Fensterbreite                 
    						CW_USEDEFAULT, // Fensterhöhe                
    						NULL, // übergeordnetes Fenster
    						NULL, // Menü
    						hInstance, // Programm-Kopiezähler (Programm-ID)            
    						NULL); // zusätzliche Parameter
    
    	ShowWindow (hwnd, iCmdShow);
    	UpdateWindow (hwnd);
    
    	while (GetMessage (&msg, NULL, 0, 0))
    	{
    		TranslateMessage (&msg);
    		DispatchMessage (&msg);
    	}
    
    	return msg.wParam;
    
    }
    
    // Die Hauptnachrichtenschleife
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
       HDC hdc;
       PAINTSTRUCT ps;
    
       switch (message)
       {
       case WM_CREATE:
          return (0);
    
       case WM_USER + 2:
    	   MessageBox(NULL, "ja", "ja", MB_OK);
    
       case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps);
          TextOut (hdc, 0, 0, "hallo ", 5);
          EndPaint (hwnd, &ps);
          return (0);
    
       case WM_DESTROY:
          PostQuitMessage (0);
          return (0);
    
       }
    
       return DefWindowProc (hwnd, message, wParam, lParam);
    }
    


  • Da du das Handle deines Fensters brauchst würde sich wohl WM_CREATE anbieten 🙂



  • Hi flenders,

    könntest du mir eventuell helfen das getProcAddress einzubauen? habs gestern die ganze nacht noch versuch bin aber auf keinen grünen zweig gekommen.

    McK



  • Du könntest auch einfach den lib-File, der Hook-DLL mitlinken, dann sparst du dir das ganze mit LoadLibrary und GetProcAddress und kannst die Funktion direkt verwenden 🙂

    Ansonsten hilft dir vielleicht das hier oder die Forensuche 🤡


Anmelden zum Antworten