SendMessage如何截取到消息的发送者
SendMessage第一个参数指定消息的接收者,接收者在收到这条消息后,如何知道发送者是谁,来自哪个进程?谢谢。 同样求解.... 知道这个可就好了!进程之间可以互传消息了! 上英文论坛问问 如果仅是进程间通信,可以自定义一个消息,明确规定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) 先学习下,建议继续深入研究
最近天气好热...注意力很容易分散 to 1#
如果非自定义的话,恐怕要HOOK才能获取吧?
btw:如何得知谁在HOOK?(或者说:如何得知某一消息或事件被HOOK?) 经常沾楼主的光,楼主是非常热心的! Re FBWOLF:
FBWOLF兄言重了,只是我们的兴趣面差不多而已。
Re ceoguang:
大概,我也觉得应该安装HOOK,但不知应该安装哪种类型的。对于HOOK始终不得其要领。如果ceoguang兄有何实现方法或思路,希望不吝赐教。 to ls
关于这方面的消息,还真没想到如何去捕捉,不过,如果对VC熟悉的话可以参考下Spy++ 收藏起来备用
页:
[1]