Windows 消息机制
本帖最后由 十二 于 2010-12-7 14:53 编辑Windows消息绝大多数windows事件都会产生消息,比如关闭一个窗口,点击一个窗口,最小化,一个窗口失去焦点的时候(窗口未被激活),都会产生message(消息)
依旧拿出FXTZ来说。
F9使其运行,Alt+V W可以看到 所有的窗口句柄。
findwindow函数也可以帮你找到指定窗口的HWND句柄
我来用
句柄=000205EC
标题=搶曽旕憐揤懃 乣 挻淲媺僊僯儑儖偺撲傪捛偊 Ver1.10
来测试消息
右键句柄=000205EC选择在ClassProc上设置消息断点
选择WM_CLOSE消息。这个消息会在程序结束前寄送到该线程窗口。
选择确定,回到FXTZ点击右上角的X,这时OD帮我们断下来。
看堆栈窗口,可以看到消息被压入堆栈。我们修改消息为WM_ACTIVATE=0x0000006
修该0012F628 00000000|WA_INACTIVE Minimized = 0为0x0000002意思是发送一个激活对话框的消息取代WM_CLOSE。
取消掉007FAD40的消息断点。F9执行你会发现FXTZ依旧在运行。
很幸运的是windows下的SendMessage函数能用来给任意一个窗口句柄发送一个消息。而findwindow函数正好能获取一个窗口的句柄。
眼明的人能看出来。
这样就能给一个程序发送一个伪消息,来改变消息对程序的控制,有点像hook
比如你往往有些时候没激活窗口 但是可以SendMessage WM_ACTIVATE 来骗过程序的消息子程。 使程序以为该窗口是在激活状态中
好复杂,看不懂
这个可以用来干什么呢? 亮点在最后一句 我要说的话在评分处= = 这个可以衍生出其他有用的功能的说(大概) 似乎有些游戏 如果失去窗口焦点就会暂停。 录像或者切换别的窗口时。游戏便会暂停。这时候给窗口一个SendMessage WM_ACTIVATE似乎可以很有效的改善这种情况。 原來如此,難怪有些遊戲TAB後有些不能暫停有些能
不過好複雜,看不懂額 改善游戏的暂停功能,这样?
可以拿来做修改游戏的一部分吧...要说方便倒也是XD 回复 8# 红色不夜城
不一定Windows的消息甚多。 和setwindowshookex配合可以更甚
页:
[1]
2