我想用C语言写一个全局键盘钩子程序,成功后发100分!
我觉得你还写不出dll是什么。
但是我有好消息告诉你。
Log hook可以在程序中实现全局键盘捕获:
VC代码:
# include & ltwindows.h & gt
HHOOK LogHook = NULL
LRESULT回调LogProc(int代码,WPARAM wParam,LPARAM lParam)
{
event msg * pEventMsg =(event msg *)lParam;
if(code==HC_ACTION)
{
开关(pEventMsg-& gt;消息)
{
case (WM_KEYDOWN):
字节bkey state[256];
无符号短UAS CII[4];
UINT uScanCode
int iRet
GetKeyboardState(bkey state);
bkey state[VK _ SHIFT]= getkey state(VK _ SHIFT);
us cancode =(pEventMsg-& gt;paramH & gt& gt16);
iRet = ToAscii(pEventMsg-& gt;paramL,uScanCode,bKeyState,uAscii,0);
开关(iRet)
{
案例0:
打破;
案例1:
if((char)u ascii[0]= = ' t ' | |(char)u ascii[0]= = ' t ')//t键按下。
{
MessageBox(空,“t已按下”,“按键提示”,MB _ OK);
/* * * * * * * * * * * *实现自己播放音乐的功能* * * * * * * * * * * * *
}
else if((char)u ascii[0]= ' y ' | |(char)u ascii[0]= = ' y ')//y键按下。
{
MessageBox(空,“y按下”,“按键提示”,MB _ OK);
/* * * * * * * * * * * * * *我在这里实现停止播放音乐的功能* * * * * * * * * *
}
打破;
默认值:
打破;
}
默认值:
打破;
}
}
返回CallNextHookEx(LogHook,code,wParam,lParam);
}
int WINAPI WinMain(h instance h instance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
log hook = SetWindowsHookEx(WH _ journal record,LogProc,hInstance,NULL);
而(1)睡眠(100);
返回0;
}
日志挂钩不稳定。