您的位置:首页 > 其它

hook 窗口消息队列

2012-11-08 16:41 405 查看
此段代码,不能在控制台里运行,必须有窗口。

 

// HOOK 消息循环处理.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>
//
//LRESULT (CALLBACK *Old_WindowProc) (HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
LONG Old_WindowProc;
LONG New_WindowProc;
HWND cmd_hwd;

LRESULT CALLBACK myWindowProc (HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
LRESULT re;
if (uMsg == WM_COPYDATA)
{
printf("收到的数据消息");
}
re= CallWindowProc((WNDPROC)Old_WindowProc,hwnd, uMsg, wParam,lParam);
return re;
};

void Hook()//开始替换消息列队
{
cmd_hwd=GetConsoleWindow();//获取当前控制窗口的的句柄
printf("当前消息循环句柄为:%x",cmd_hwd);
Old_WindowProc=SetWindowLong(cmd_hwd,GWL_WNDPROC,(LONG)myWindowProc);
};

void UmHook()//停止替换消息列队
{
New_WindowProc=SetWindowLong(cmd_hwd,GWL_WNDPROC,(LONG)Old_WindowProc);
};

int _tmain(int argc, _TCHAR* argv[])
{
Hook();
while(1)
{
Sleep(1000);
}
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: