c语言全局钩子,c中的全局键盘钩子

假设您使用的是Windows,并且您希望捕获全局击键,那么我将在此处解决问题.一种方法是使用LowLevelHooks.请看以下示例:

在代码中的某处定义此回调函数:

//The function that implements the key logging functionality

LRESULT CALLBACK LowLevelKeyboardProc( int nCode, WPARAM wParam, LPARAM lParam )

{

char pressedKey;

// Declare a pointer to the KBDLLHOOKSTRUCTdsad

KBDLLHOOKSTRUCT *pKeyBoard = (KBDLLHOOKSTRUCT *)lParam;

switch( wParam )

{

case WM_KEYUP: // When the key has been pressed and released

{

//get the key code

pressedKey = (char)pKeyBoard->vkCode;

}

break;

default:

return CallNextHookEx( NULL, nCode, wParam, lParam );

break;

}

//do something with the pressed key here

....

//according to winapi all functions which implement a hook must return by calling next hook

return CallNextHookEx( NULL, nCode, wParam, lParam);

}

然后在你的main函数中的某个地方你可以像这样设置钩子:

//Retrieve the applications instance

HINSTANCE instance = GetModuleHandle(NULL);

//Set a global Windows Hook to capture keystrokes using the function declared above

HHOOK test1 = SetWindowsHookEx( WH_KEYBOARD_LL, LowLevelKeyboardProc, instance,0);

有关挂钩的更多一般信息可以在here找到.

您也可以按照SetWindowsHooksEX文档中给出的说明以相同的方式捕获其他全局事件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值