设为首页收藏本站喵玉殿官方微博

 找回密码
 少女注册中
搜索
查看: 9029|回复: 14

[编程算法] Windows 消息机制

  [复制链接]
发表于 2010-12-7 14:41:28 | 显示全部楼层 |阅读模式
本帖最后由 十二 于 2010-12-7 14:53 编辑

Windows消息绝大多数windows事件都会产生消息,比如关闭一个窗口,点击一个窗口,最小化,一个窗口失去焦点的时候(窗口未被激活),都会产生message(消息)

依旧拿出FXTZ来说。

F9使其运行,Alt+V W可以看到 01f34ce9-c7a7-4700-b919-d425ac50916e.JPG 所有的窗口句柄。
findwindow函数也可以帮你找到指定窗口的HWND句柄

我来用
句柄=000205EC
标题=搶曽旕憐揤懃 乣 挻淲媺僊僯儑儖偺撲傪捛偊 Ver1.10
来测试消息

右键句柄=000205EC选择在ClassProc上设置消息断点

QQ截图未命名.jpg

选择WM_CLOSE消息。这个消息会在程序结束前寄送到该线程窗口。

选择确定,回到FXTZ点击右上角的X,这时OD帮我们断下来。

CCCCC.JPG 看堆栈窗口,可以看到消息被压入堆栈。我们修改消息为 2232323.jpg WM_ACTIVATE=0x0000006

修该0012F628   00000000  |WA_INACTIVE Minimized = 0  为0x0000002  意思是发送一个激活对话框的消息取代WM_CLOSE。


取消掉007FAD40  的消息断点。F9执行你会发现FXTZ依旧在运行。

很幸运的是windows下的SendMessage函数能用来给任意一个窗口句柄发送一个消息。而findwindow函数正好能获取一个窗口的句柄。


眼明的人能看出来。


这样就能给一个程序发送一个伪消息,来改变消息对程序的控制,有点像hook



比如你往往有些时候没激活窗口 但是可以SendMessage WM_ACTIVATE 来骗过程序的消息子程。   使程序以为该窗口是在激活状态中

评分

参与人数 2积分 +4 收起 理由
幻想_Final + 1 相当于把悬挂暂停关掉么= =
真PKS同志 + 3 我表示真的没神马用= = 或许网游外挂可能用 ...

查看全部评分

发表于 2010-12-7 14:52:11 | 显示全部楼层
好复杂,看不懂
这个可以用来干什么呢?
回复

使用道具 举报

 楼主| 发表于 2010-12-7 14:54:30 | 显示全部楼层
亮点在最后一句
回复

使用道具 举报

发表于 2010-12-7 15:00:51 | 显示全部楼层
我要说的话在评分处= =
回复

使用道具 举报

发表于 2010-12-7 15:02:29 | 显示全部楼层
这个可以衍生出其他有用的功能的说(大概)
回复

使用道具 举报

 楼主| 发表于 2010-12-7 15:04:05 | 显示全部楼层
似乎有些游戏 如果失去窗口焦点就会暂停。     录像或者切换别的窗口时。游戏便会暂停。这时候给窗口一个SendMessage WM_ACTIVATE  似乎可以很有效的改善这种情况。
回复

使用道具 举报

发表于 2010-12-7 15:07:59 | 显示全部楼层
原來如此,難怪有些遊戲TAB後有些不能暫停有些能
不過好複雜,看不懂額
回复

使用道具 举报

发表于 2010-12-7 15:12:05 | 显示全部楼层
改善游戏的暂停功能,这样?
可以拿来做修改游戏的一部分吧...要说方便倒也是XD
回复

使用道具 举报

 楼主| 发表于 2010-12-7 15:14:30 | 显示全部楼层
回复 8# 红色不夜城


    不一定Windows的消息甚多。
回复

使用道具 举报

 楼主| 发表于 2010-12-7 15:17:13 | 显示全部楼层
和setwindowshookex配合可以更甚
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|无图版|手机版|小黑屋|喵玉殿

GMT+8, 2025-10-31 03:48

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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