是这样的,我有一A.EXE,可以通过一个外部文件指定发送到哪个窗体的文件.

TXXClass EXENAME 窗口名
TXXClassA EXENAMEA 窗口名A
TXXClassB EXENAMEB 窗口名B
TXXClassC EXENAMEC 窗口名C现在我只打开了EXENAMEB进行接收消息换句话说,我想用A.EXE发送一个消息给EXENAMEB 但我是根据文件全发的,如果ABC窗体都打开,则都可以收到A.EXE发来的消息
现在问题是A.EXE执行了发送,但我这四个窗口没有一个可以收得到?
请问我有什么方法可以跟踪A.EXE发出了消息,并发送到了哪一个窗口句柄.SPY++能否捉到.
或有更好的办法.

解决方案 »

  1.   

    TXXClass.WndProc看看有没有收到消息
      

  2.   

    trace??没有用过如何用.
    回复2楼,如果WIN过程可以过滤得出来,就证明发到了窗体,现在就是没有发到,用HOOK去勾消息,可以勾到,但不知道该消息是发向哪个窗体句柄的.
      

  3.   

    是我没描述清楚了.
    如A.EXE,发送一个"修改B程序窗口标题的消息",半路截获,改装消息,再发送回给B程序.
    SendMessage(B.handle,XX,0,0);半路,被我用HOOK勾到了XX,但我只知道有这到一个消息,并不知道这个消息发给谁的.当然在透明状态可
    勾到后做处理再SENDMESSAGE即可.现在就是不透明,不知道哪个程序发出的XX消息,我只知道有这个XX消息,捉到了,如果从捉到的XX消息中知道,正发往何处.
      

  4.   


    这个好办吧,在你的SendMessage(,,,,)后两个参数可以是结构体指针,这个你随便定义,
    你可以定义个指针,如:
    TSndMsgPa= record
      Form: string;{来自哪个窗口}
      To: string;  {将去哪}
    end;
    PSndMsgPa = ^TSndMsgPa;
    SndMsgPa: PSndMsgPa ; 
    具体类型根据需要定义,发送的时候你总知道是从谁发的,发给谁吧,然后再SendMessage(,,Integer(@SndMsgPa),)咯,截获的时候再把相应的玩意解析不就o了!