KeyboardHook
Jednoduchý "háček" klávesnice. Háček sice není zrovna nejlepší překlad, ale zůstaneme u něho.
Když např. potřebujete záznam stisknutých kláves při testování návrhu ovladače, kde se Vám nezobrazují stisknuté klávesy, výborně poslouží.
Toto je celý kód. Po přeložení jako DLL se spouští rundll32 nazev.dll,SetHook. Objeví se okno ( MessageBox ), které nesmíme zavřít, abychom neostanili instanci DLL knihovny z paměti.
Záznam stisknutých kláves (v rozsahu 32-127) je v souboru keylog.txt a ostatní funkční klávesy pro kontrolu pípají. Samozřejmě, že v uvedeném souboru, jsou zaznemenávány stisknuté klávesy zdvojeně. To ale nevadí, nedělám hack klávesnice.
#include <stdio.h>
#include <windows.h>
#include <fstream.h>
HINSTANCE handleDLL;
HHOOK handleHOOK;
extern "C" __declspec(dllexport) BOOL SetHook();
LRESULT CALLBACK KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
ofstream txt("keylog.txt",ios::app);
if(nCode>=0)
{
if (wParam>32 && wParam<127) txt<<(char)wParam
else Beep(100,20);
}
txt.close();
return CallNextHookEx(handleHOOK, nCode, wParam, lParam);
}
BOOL SetHook()
{
handleHOOK = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardHook, handleDLL, 0);
if ( !handleHOOK == NULL )
{
MessageBox (NULL,"Instalace KeyHook","KeyHook",MB_OK);
} return false;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if ( fdwReason == DLL_PROCESS_ATTACH ) handleDLL = hinstDLL;
return TRUE;
}
Když např. potřebujete záznam stisknutých kláves při testování návrhu ovladače, kde se Vám nezobrazují stisknuté klávesy, výborně poslouží.
Toto je celý kód. Po přeložení jako DLL se spouští rundll32 nazev.dll,SetHook. Objeví se okno ( MessageBox ), které nesmíme zavřít, abychom neostanili instanci DLL knihovny z paměti.
Záznam stisknutých kláves (v rozsahu 32-127) je v souboru keylog.txt a ostatní funkční klávesy pro kontrolu pípají. Samozřejmě, že v uvedeném souboru, jsou zaznemenávány stisknuté klávesy zdvojeně. To ale nevadí, nedělám hack klávesnice.
#include <stdio.h>
#include <windows.h>
#include <fstream.h>
HINSTANCE handleDLL;
HHOOK handleHOOK;
extern "C" __declspec(dllexport) BOOL SetHook();
LRESULT CALLBACK KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
ofstream txt("keylog.txt",ios::app);
if(nCode>=0)
{
if (wParam>32 && wParam<127) txt<<(char)wParam
else Beep(100,20);
}
txt.close();
return CallNextHookEx(handleHOOK, nCode, wParam, lParam);
}
BOOL SetHook()
{
handleHOOK = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardHook, handleDLL, 0);
if ( !handleHOOK == NULL )
{
MessageBox (NULL,"Instalace KeyHook","KeyHook",MB_OK);
} return false;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if ( fdwReason == DLL_PROCESS_ATTACH ) handleDLL = hinstDLL;
return TRUE;
}
Komentáře
Okomentovat