看流星社区

 找回密码
 注册账号
查看: 2295|回复: 0

VC hook 窗口消息队列

[复制链接]

该用户从未签到

发表于 2015-3-30 09:36:45 | 显示全部楼层 |阅读模式
此段代码,不能在控制台里运行,必须有窗口。


// 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;
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-17 02:11

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表