SetWindowHook 做消息响应

HHOOK g_Hook = NULL;

LRESULT CALLBACK CallWndProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
)
{
    CWPSTRUCT * pMsg = (CWPSTRUCT*) lParam;
    if(pMsg->message == 0x500)
    {
        TCHAR szDebugMsg[256] = {0};
        _stprintf_s(szDebugMsg,_T("我的消息 消息内容:%s\n"),
            (TCHAR*)pMsg->wParam);
        OutputDebugString(szDebugMsg);

    }

    return CallNextHookEx(g_Hook,nCode,wParam,lParam);
}

void CTestHookWindowProcedureDlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    g_Hook = ::SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,::GetModuleHandle(NULL),::GetCurrentThreadId());
    if(g_Hook == NULL)
    {
        TCHAR szError[256] = {0};
        _stprintf_s(szError,_T("Error:%d"),::GetLastError());
        AfxMessageBox(szError);
    }

}

UINT __cdecl MyControllingFunction( LPVOID pParam )
{
    HWND hWnd = ((CTestHookWindowProcedureDlg*)pParam)->m_hWnd;
    while(1)
    {
        TCHAR szBuf[] = _T("张东升");
        OutputDebugString(_T("发送前\n"));
        ::SendMessage(hWnd,0x500,(WPARAM)szBuf,0);
        OutputDebugString(_T("发送后\n"));

        Sleep(5000);
    }
}
void CTestHookWindowProcedureDlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    AfxBeginThread(MyControllingFunction,this);
}
时间: 2024-12-08 09:15:13

SetWindowHook 做消息响应的相关文章

MFC消息响应机制 q

MFC消息响应机制分析 1 引言微软公司提供的MFC基本类库(Microsoft Foundation Classes),是进行可视化编程时使用最为流行的一个类 库.MFC封装了大部分Windows API函数和Windows控件,使得程序的开发变得简单,极大的缩短了程序的开发 周期.MFC独创的Document/View框架结构,能够将管理数据的代码和显示数据的程序代码分开,并且设计了 一套方便的消息映射和命令传递机制,方便程序员的开发使用.其中消息映射机制本身比较庞大和复杂,对 它的分析和了

MFC消息响应机制分析

---- 摘要: ---- MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,我们在这里,对它的整个消息映射机制进行了系统的分析,可以帮助程序开发人员对MFC的消息映射机制有一个比较透彻的了解. ---- 关键词:面向对象 消息映射 MFC 程序设计 一.引言---- VC++的MFC类库实际上是Windows下C++编程的一套最为流行的类库.MFC的框架结构大大方便了程序员的编程工作,但是为了更加有效.灵活的使用MFC编程

MFC动态创建控件及添加消息响应

MFC动态创建控件及添加消息响应 分类: 控件技术2013-01-24 14:12 7020人阅读 评论(0) 收藏 举报 转载地址:http://blog.csdn.net/luy3728000/article/details/8193918 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框,这时我们在对话框编辑窗口中,从工具窗口中拖出所需控件放

鼠标键盘消息响应及系统热键注册

① 鼠标消息: WM_MOUSEMOVE     鼠标移动位置WM_LBUTTONDOWN       鼠标左键按下WM_LBUTTONUP     鼠标左键弹起WM_LBUTTONDBLCLK                    鼠标左键双击WM_RBUTTONDOWN                      鼠标右键按下WM_RBUTTONUP          鼠标右键弹起WM_RBUTTONDBLCLK   鼠标右键双击WM_MBUTTONDOWN       鼠标中键按下WM_MB

MFC中消息响应机制

由于视类窗口始终覆盖在框架类窗口之上,因此所有操作,包括鼠标单击.鼠标移动等操作都只能由视类窗口捕获.一个MFC消息响应函数在程序中有三处相关信息:函数原型.函数实现和以及用来关联消息和消息响应函数的宏. (1)在消息响应函数的原型代码中,函数声明的前部有一个afx_msg限定符,也是一个宏,该宏表明这个函数是一个消息响应函数的声明. (2)消息映射宏:在视图类的源文件中,BEGIN_MESSAGE_MAP()和 END_MASSAGE_MAP()这两个宏之间定义了消息映射表,例如对于画线,其中

MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应

MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/details/5866213 二.在对话框中创建视图(我这里创建的是一个滚动视图): 见博文: http://blog.csdn.net/clever101/article/details/4873994 http://blog.csdn.net/clever101/article/details/37790

使用dwr3.0实现服务端向浏览器做消息推送,做滚动评论或弹幕效果,而且根据视频id做推送消息拦截功能

最近项目要实现视频播放时做弹幕和评论滚动,使用flash做sockt编程不会,就想到使用服务器消息推送做,翻找资料发现使用html5的websocket可以实现,但是ie8是不支持websocket的,最终确定使用dwr3做消息推送,普通的dwr3做消息推送会把消息推送到所有打开的页面,这样针对某一个视频的评论就会弹出到其他的视频中去,实现每个视频弹出各自的评论,就需要做dwr3的消息推送做过滤处理,经过一天的研究终于搞定了 贴出完整的代码demo 1 使用dwr3的web.xml的配置 <se

MFC窗口的消息响应顺序

最开始的消息传递 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数 3.WindowProc() 该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数 4.OnWndMsg() 该函数的功能首先按字节对消息进行排序,对于WM_COM

做一个响应式网站需要多长时间

以传统的响应式建站模式来讲,做一个响应式网站需要的时间是很长的.抛开页面设计和模块的结合,光是网站的结构和网站布局就需要花费很长时间.还没计算建站前的准备工作,网站的策划等等.所以一般让企业对响应式网站望而止步的因素不单单是建站的费用,还有就是建站的时间过长,让网站的上线收到延迟,没有办法能够抢在黄金时间上线.那做一个响应式网站要多久呢?一般以企业展示型网站来统计,找建站公司来搭建大概需要3-6个月时间,如果是自己找开发团队时间大概要2-3个月时间.所以企业对于响应式网站既是爱,又是狠. 有什么