鼠标全局钩子
2009-05-23 16:21
134 查看
最近看一个老兄写的一个鼠标的全局钩子,感觉其代码有点过多繁琐,于是就自己改写了一下。发现学到不少的知识,特拿来分享!
本程序分为两个部分:
第一:dll部分。
第二:程序部分。
本程序是主要获得任意窗口的标题。
第一部分代码如下:
第二部分主要代码:
建立一个基于对话框的应用程序,然后在OnInitDialog函数里面添加启动钩子函数,具体代码:
分别添加卸载钩子和取消的按钮命令,代码如下:
本程序分为两个部分:
第一:dll部分。
第二:程序部分。
本程序是主要获得任意窗口的标题。
第一部分代码如下:
#include <windows.h> #pragma data_seg("mydata") HWND g_hPrevTarWnd = NULL; //上次鼠标所指的窗口句柄 HWND g_hDisplayWnd = NULL; //显示目标窗口标题编辑框的句柄 HHOOK g_hHook = NULL; //安装的鼠标勾子句柄 #pragma data_seg() #pragma comment(linker,"/section:mydata,rws") //实现数据共享 //钩子函数的实现: LRESULT CALLBACK MouseProc(int nCode,WPARAM wparam,LPARAM lparam) { LPMOUSEHOOKSTRUCT pMouseHook = (MOUSEHOOKSTRUCT FAR *)lparam; if (nCode >= 0) { HWND glhTargetWnd = ::WindowFromPoint(pMouseHook->pt); if ((glhTargetWnd != g_hPrevTarWnd) && (NULL != glhTargetWnd)) { char szCaption[256]; GetWindowText(glhTargetWnd,szCaption,100); //取目标窗口标题 if(IsWindow(g_hDisplayWnd)) { SendMessage(g_hDisplayWnd,WM_SETTEXT,0, (LPARAM)(LPCTSTR)szCaption); } g_hPrevTarWnd=glhTargetWnd;//保存目标窗口 } } return CallNextHookEx(g_hHook,nCode,wparam,lparam); //继续传递消息 } //启动钩子 _declspec(dllexport) void StartHook(HWND hWnd) { g_hHook = SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0); //全局钩子最后一个函数要为零 g_hDisplayWnd = hWnd; } //卸载钩子 _declspec(dllexport) void StopHook() { BOOL bResult; bResult = UnhookWindowsHookEx(g_hHook); if(bResult) { g_hPrevTarWnd = NULL; g_hDisplayWnd = NULL; g_hHook = NULL; } }
第二部分主要代码:
建立一个基于对话框的应用程序,然后在OnInitDialog函数里面添加启动钩子函数,具体代码:
// TODO: Add extra initialization here CWnd* pWnd=GetDlgItem(IDC_HOOkEDIT); StartHook(pWnd->GetSafeHwnd());
分别添加卸载钩子和取消的按钮命令,代码如下:
void CHookTestDlg::OnStophook() { // TODO: Add your control notification handler code here StopHook(); GetDlgItem(IDC_STOPHOOK)->EnableWindow(FALSE); } void CHookTestDlg::OnCancel() { // TODO: Add extra cleanup here StopHook(); CDialog::OnCancel(); }
相关文章推荐
- 安装全局钩子程序(鼠标钩子)
- Delphi实现全局鼠标钩子
- 不需要DLL的全局钩子完成鼠标截屏功能
- Windows 全局 鼠标 钩子 DLL
- 鼠标全局钩子
- .NET 实现线程键盘鼠标钩子和全局鼠标键盘钩子
- .NET使用钩子捕获全局鼠标和键盘事件
- C#做的全局鼠标/键盘钩子(转)
- VB 用全局钩子,记录鼠标点击次数
- .NET 实现线程键盘鼠标钩子和全局鼠标键盘钩子
- C#做的全局鼠标/键盘钩子
- C#全局鼠标钩子
- 鼠标函数VC++全局钩子实现鼠标坐标值实时捕获
- [Hook]个人学习笔记——挂个简单的钩子(全局鼠标Hook)(.NET)
- 全局钩子(hook鼠标键盘消息)
- 用全局钩子截掉所有进程的鼠标和键盘 DLL的调试方法
- 使用C#钩子监视全局鼠标位置
- C#做的全局鼠标/键盘钩子
- C# 鼠标全局钩子
- 安全的鼠标全局钩子---代码粘贴