全局钩子接收键盘消息并产生新的全局键盘消息
2014-02-19 17:16
211 查看
下面代码的功能是接收了键盘的空格后,产生键盘事件一个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);
}
#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);
}
相关文章推荐
- WPF 键盘全局接收消息
- 全局钩子(hook鼠标键盘消息)
- .NET使用钩子捕获全局鼠标和键盘事件
- win7下全局低层键盘钩子实现
- 2,如何让程序避开全局键盘钩子的监视
- C#.Net的全局键盘钩子(Hook)技术
- Windows全局钩子dll(键盘)
- C#做的全局鼠标/键盘钩子
- 转自sgear博客:C#.Net的全局键盘钩子(Hook)技术
- 用全局钩子截掉所有进程的鼠标和键盘 DLL的调试方法
- 设置全局键盘钩子和消息钩子
- 【VB6】全局键盘钩子
- SetWindowsHookEx设置全局键盘钩子
- Qt:当前窗口注册全局键盘消息
- C#.Net的全局键盘钩子(Hook)技术
- C++实现全局鼠标、键盘消息hook,支持事件
- 安装全局消息钩子实现dll窗体程序注入
- 键盘"全局钩子"的使用 ..
- .NET的全局键盘钩子
- 全局钩子实现键盘按键替换