SetWindowHookEx 做消息响应

简介: HHOOK g_Hook = NULL; LRESULT CALLBACK CallWndProc( _In_ int nCode, _In_ WPARAM wParam, _In_ LPARAM lParam ) { CWPSTRUCT * pMsg...
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);
}

 

相关文章
|
消息中间件 安全 API
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
SendMessage/PostMessage API 可以实现发送系统消息,这些消息可以定义为常见的鼠标或键盘事件、数据的发送等各种系统操作......
5685 1
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(三)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(三)
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(二)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(四)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(一)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息
|
开发工具 Windows
MFC中自定义消息
MFC中自定义消息
190 0
|
C++ Windows API