钩子的类型和实现
2008-02-04
- BOOL CMouseDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
- ASSERT(IDM_ABOUTBOX <0xF000);
- CMenu* pSysMenu = GetSystemMenu(FALSE);
- if (pSysMenu != NULL)
- {
- CString strAboutMenu;
- strAboutMenu.LoadString(IDS_ABOUTBOX);
- if (!strAboutMenu.IsEmpty())
- {
- pSysMenu->AppendMenu(MF_SEPARATOR);
- pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
- }
- }
- SetIcon(m_hIcon, TRUE);
- SetIcon(m_hIcon, FALSE);
-
- CWnd * pwnd=GetDlgItem(IDC_EDIT1);
-
- m_hook.starthook(pwnd->GetSafeHwnd());
-
- return TRUE;
-
- }
- (7)链接DLL库,即把..\Mousehook\debug\Mousehook.lib加入到项目设置链接标签中;
(8)编译项目生成可执行文件;
(9)把Mousehook.DLL拷贝到..\mouse\debug目录中;
(10)先运行几个可执行程序,然后运行Mouse.exe程序,把鼠标在不同窗口中移动,在Mouse.exe程序窗口中的编辑框内将显示出鼠标所在的应用程序主窗口的标题。
4 条评论
大哥不怎么上IM吗?有些问题想当面请教。还有这篇文章数据补补全啊,好让我学习你的这个类
这篇文章在我改版的时候,可能有一部分数据丢了,感觉数据不全了。
这个m_hook是个什么控件的成员变量?还有个问题,我一直搞不清ASSERT()在什么时候使用,很多时候都觉得可用可不用,效果没什么差别,解释下好吗?
m_hook是一个钩子的类。
ASSERT是断言,在MFC的Debug版本的情况下才可以使用。如果条件符合会弹出一个让你“继续”,“终止”,这样的对话框。帮助你定位出错的位置。