首页 > 其他 > 详细

全局钩子接收键盘消息并产生新的全局键盘消息

时间:2014-02-20 04:48:26      阅读:358      评论:0      收藏:0      [点我收藏+]

下面代码的功能是接收了键盘的空格后,产生键盘事件一个Esc按键的KeyDown,一个空格的KeyDown,在一个Esc按键的KeyDown消息。是按顺序产生这些事件的,代码如下:

#include <Windows.h>
#define DllExport _declspec(dllexport)
HHOOK g_KeyBoard = NULL;
BOOL static Test = FALSE;
LRESULT CALLBACK KeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(VK_SPACE ==wParam && (1 == (lParam >> 30 & 1)) &&Test)
{
if(Test)
Test = FALSE;
else
Test = TRUE;
return 1;
}
if(VK_SPACE == wParam &&(0 == (lParam >> 30 & 1)))
{
HWND CurrentWnd = GetActiveWindow();
CHAR szClassName[255];
GetClassName(CurrentWnd,szClassName,255);
if(strlen(szClassName) < 100)
return CallNextHookEx(g_KeyBoard,nCode,wParam,lParam);
keybd_event(VK_ESCAPE,0,0,60);
keybd_event(VK_SPACE,0,0,60);
keybd_event(VK_ESCAPE,0,0,60);
//keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,60);
return 1;
}
return CallNextHookEx(g_KeyBoard,nCode,wParam,lParam);

}

//导出函数,注册全局钩子
DllExport void SetHook()
{
g_KeyBoard = SetWindowsHookEx(WH_KEYBOARD,KeyBoardProc,
GetModuleHandle(TEXT("PlusEclipse")),0);
}

全局钩子接收键盘消息并产生新的全局键盘消息

原文:http://www.cnblogs.com/xxrhblog/p/3556287.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!