我想用C语言写一个全局键盘钩子程序,成功后发100分!

全局键盘挂钩需要在dll中实现。

我觉得你还写不出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;

}

日志挂钩不稳定。