全局钩子(hook鼠标键盘消息)
2011-04-10 17:51
567 查看
生成DLL文件,模块定义文件为:
LIBRARY Hook
EXPORTS
SetHook @2
实现文件如下。其中g_hWnd为所有进程共享,并且绕过了系统对可写数据的写时复制机制,维护的是一份拷贝。
调用DLL的进程的实现:
LIBRARY Hook
EXPORTS
SetHook @2
实现文件如下。其中g_hWnd为所有进程共享,并且绕过了系统对可写数据的写时复制机制,维护的是一份拷贝。
// Hook.cpp #include <windows.h> HHOOK g_hMouse = NULL; HHOOK g_hKeyboard = NULL; // 为Hook.DLL创建一个新的节,将全局变量g_hWnd放入其中 #pragma data_seg("MySec") HWND g_hWnd = NULL; #pragma data_seg() // 设置刚创建的节为共享的节 #pragma comment(linker, "/section:MySec,RWS") // 鼠标钩子过程 LRESULT CALLBACK MouseProc( int nCode, // hook code WPARAM wParam, // message identifier LPARAM lParam // mouse coordinates ) { return 1; // 屏蔽所有鼠标消息 } // 键盘钩子过程 LRESULT CALLBACK KeyboardProc( int code, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message information ) { // 后门按键用于结束该进程 if (VK_F2 == wParam) { ::SendMessage(g_hWnd, WM_CLOSE, 0, 0); UnhookWindowsHookEx(g_hKeyboard); UnhookWindowsHookEx(g_hMouse); } else { return 1; // 屏蔽所有键盘消息 } } // 安装鼠标钩子过程的函数 void SetHook(HWND hwnd) // 参数是为了让dll获得调用进程的主窗口的句柄 { g_hWnd = hwnd; // hook所有进程的鼠标、键盘消息 g_hMouse = SetWindowsHookEx(WH_MOUSE, MouseProc, GetModuleHandle("Hook.dll"), 0); g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandle("Hook.dll"), 0); }
调用DLL的进程的实现:
///////////////////////////////////////////////////////////////////////////// // CHookTestDlg message handlers // 导入函数 __declspec(dllimport) void SetHook(HWND hwnd); BOOL CHookTestDlg::OnInitDialog() { // TODO: Add extra initialization here // 顶层窗口及最大化窗口的实现 int cxScreen, cyScreen; cxScreen = GetSystemMetrics(SM_CXSCREEN); cyScreen = GetSystemMetrics(SM_CYSCREEN); SetWindowPos(&wndTopMost, 0, 0, cxScreen, cyScreen, SWP_SHOWWINDOW); // 调用DLL中的函数 SetHook(m_hWnd); return TRUE; // return TRUE unless you set the focus to a control }
相关文章推荐
- C++实现全局鼠标、键盘消息hook,支持事件
- VB.NET全局键盘鼠标钩子 [Vb.Net Hook](修正版)
- 鼠标键盘钩子HOOK------->全局钩子(所有桌面软件都能响应此钩子)
- VC++ Hook截取鼠标点击窗口消息的问题!全局钩子
- VB.NET全局键盘鼠标钩子 [Vb.Net Hook](修正版)
- 转自sgear博客:C#.Net的全局键盘钩子(Hook)技术
- 如何在C#中使用全局鼠标、键盘Hook
- C#做的全局鼠标/键盘钩子
- C#做的全局鼠标/键盘钩子
- 全局钩子监听键盘鼠标事件
- [置顶] 全局模拟window键盘消息和鼠标消息
- Hook 简单的实例--拦截鼠标和键盘消息(一)
- .NET 实现线程键盘鼠标钩子和全局鼠标键盘钩子
- 在C#中使用全局鼠标、键盘Hook
- HOOK技术--键盘鼠标钩子实例
- 如何在C#中使用全局鼠标、键盘Hook
- [原创记录]简单全局HOOK拦截大部分键盘消息
- [Hook]个人学习笔记——挂个简单的钩子(全局鼠标Hook)(.NET)
- Hook 简单的实例--拦截鼠标和键盘消息(一)
- 如何在C#中使用全局鼠标、键盘Hook