网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
全局钩子详解
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
文件是为了不让动态链接库发生名字改编.

有了动态链接库后我们还需要用一个应用程序来设置和记录我们的鼠标和键盘记录.
我们新建一个基于对话框的MFC应用程序工程HookApp.我们首先为我们的自定义消息添加所需消息响应的实现代码.
在对话框类的头文件的protected下面的注释宏中间加入
afx_msg longonHookKey(WPARAM wParam, LPARAM lParam);
afx_msg longonHookMouse(WPARAM wParam, LPARAM lParam);
指明消息处理函数,然后在对话框类的源文件中的
BEGIN_MESSAGE_MAP(CHookAppDlg, CDialog)
和END_MESSAGE_MAP之间加入下面的代码
ON_MESSAGE(HM_KEY,onHookKey)
ON_MESSAGE(HM_MOUSE,onHookMouse)
定义好后在源文件中写其实现函数:
long CHookAppDlg::OnHookKey(WPARAM wParam, LPARAM lParam)
{
// 此时参数wParam为用户按键的虚拟键码,
// lParam参数包含按键的重复次数、扫描码、前一个按键状态等信息
char szKey[80];
::GetKeyNameText(lParam, szKey, 80);   //获得按键名
CString strItem;
strItem.Format("用户按键:%s", szKey);
CListBox *pListCtrl=((CListBox *)this->GetDlgItem(IDC_LIST1));
pListCtrl->InsertString(-1,strItem);
     CFile MyFile;
char *content;
     if(!MyFile.Open(this->MyDocumentDir,
   CFile::modeRead | CFile::modeWrite))
{
   MyFile.Open(this->MyDocumentDir,
   CFile::modeCreate);
   return 0;
}
MyFile.SeekToEnd();                 //移动记录指针到末尾
pListCtrl->GetText(pListCtrl->GetCount()-1,strItem);
content=strItem.GetBuffer(MAX_PATH);
MyFile.Write(content,strItem.GetLength());
CTime today=CTime::GetCurrentTime();
CString str=today.Format("\t\t%Y年%m月%d日 %H:%M:%S\r\n");
MyFile.Write(str.GetBuffer(str.GetLength()),str.GetLength());
MyFile.Close();
return 0;
}
long CHookAppDlg::OnHookMouse(WPARAM wParam, LPARAM lParam)
{
LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *)lParam;
CString strItem,strText;
     CListBox *pListCtrl=((CListBox *)this->GetDlgItem(IDC_LIST1));
CPoint point;
::GetCursorPos(&point);
ClientToScreen(&point);
CWnd *pWnd=CWnd::GetForegroundWindow();
if(pWnd)
{
   char str[80];
   pWnd->GetWindowText(str,80);
   strText.Format("窗口:%s",str);
}
CString str;
/*CString tempstr;
//   ClientToScreen(&pMouseHook->pt);
   int x,y;
   x=pMouseHook->pt.x;
   y=pMouseHook->pt.y;
   tempstr.Format("X=%d,Y=%d",x,y);
   strText+=tempstr;*/
     if(wParam==WM_RBUTTONDOWN)
{
   str.Format("   右键单击:位置 X=%d,Y=%d",point.x,point.y);
   strText+=str;
   pListCtrl->InsertString(-1,strText);
   this->SaveToFile(strText,pListCtrl);
}
if(wParam==WM_LBUTTONDBLCLK)
{
   ScreenToClient(&point);
   str.Format("   左键双击:位置 X=%d,Y=%d",point.x,point.y);
   strText+=str;
   pListCtrl->InsertString(-1,strText);
   this->SaveToFile(

  • 下一篇资讯: MFC常用字符串操作函数
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号