找回密码
 加入
搜索
查看: 3289|回复: 10

SendMessage如何截取到消息的发送者

[复制链接]
发表于 2009-7-4 06:30:09 | 显示全部楼层 |阅读模式
SendMessage第一个参数指定消息的接收者,接收者在收到这条消息后,如何知道发送者是谁,来自哪个进程?谢谢。
发表于 2009-7-6 20:00:14 | 显示全部楼层
同样求解....
发表于 2009-7-9 20:16:32 | 显示全部楼层
知道这个可就好了!进程之间可以互传消息了!
发表于 2009-7-9 22:07:13 | 显示全部楼层
上英文论坛问问
 楼主| 发表于 2009-7-9 23:15:50 | 显示全部楼层
如果仅是进程间通信,可以自定义一个消息,明确规定wparam为发送方的PID,lparam为其他的信息。两个要通信的程序达成这种契约,接收方在收到消息后就可以知道wparam就是发送者的PID。但这只适用于自定义的消息。以下代码可以很清楚地说明我的问题。
; receiver.au3
#include <WinAPI.au3>
#include <GUITab.au3>
#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test", 300, 200)

GUICtrlCreateTab(5, 5, 290, 170)
$hTab = GUICtrlGetHandle(-1)
GUICtrlCreateTabItem("Tab 1")
GUICtrlCreateTabItem("Tab 2")
GUICtrlCreateTabItem("Tab 3")
GUICtrlSetState(-1, $GUI_SHOW)
GUICtrlCreateTabItem("")

$hCall = DllCallbackRegister("_TabProc", "int", "hWnd;uint;wparam;lparam")
$pCall = DllCallbackGetPtr($hCall)
$hOldProc = _WinAPI_SetWindowLong($hTab, -4, $pCall)

GUISetState()
Do
Until guiGetMsg() = -3

Func _TabProc($hWnd, $iMsg, $wparam, $lparam)
        If $iMsg = $TCM_GETCURSEL Then
                If Msgbox(1, '', '截取到消息,发送者的PID?') = 2 Then Return 0
        EndIf
        Return _WinAPI_CallWindowProc($hOldProc, $hWnd, $iMsg, $wparam, $lparam)
EndFunc        ;==>_TabProc()
; sender.au3
#include <GUITab.au3>

$hTab = ControlGetHandle("Test", "", "SysTabControl321")
$iCurSel = _GUICtrlTab_GetCurSel($hTab)
Msgbox(0, '', $iCurSel)
发表于 2009-7-9 23:21:12 | 显示全部楼层
先学习下,建议继续深入研究
最近天气好热...注意力很容易分散
发表于 2009-7-10 00:22:16 | 显示全部楼层
to 1#
如果非自定义的话,恐怕要HOOK才能获取吧?
btw:如何得知谁在HOOK?(或者说:如何得知某一消息或事件被HOOK?)
发表于 2009-7-10 19:22:26 | 显示全部楼层
经常沾楼主的光,楼主是非常热心的!
 楼主| 发表于 2009-7-10 19:39:10 | 显示全部楼层
Re FBWOLF:
FBWOLF兄言重了,只是我们的兴趣面差不多而已。

Re ceoguang:
大概,我也觉得应该安装HOOK,但不知应该安装哪种类型的。对于HOOK始终不得其要领。如果ceoguang兄有何实现方法或思路,希望不吝赐教。
发表于 2009-7-15 21:42:16 | 显示全部楼层
to ls
关于这方面的消息,还真没想到如何去捕捉,不过,如果对VC熟悉的话可以参考下Spy++
发表于 2009-7-15 23:46:27 | 显示全部楼层
收藏起来备用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-27 10:49 , Processed in 0.077586 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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