本机有一个VC做的Socket监听程序,监听远端服务器。收到远端的服务器的消息后,会给我机器上一个叫“信令测试任务”的窗体发送消息,
请问我如何在该窗体获得这些消息??该用什么函数?

解决方案 »

  1.   

    首先看它发的是那个消息然后在你的 "信令测试任务"窗口代码里写上private
      procedure MsgProc(var Message); Message 那个消息的值如WM_User + $100;然后在下面写代码procedure TXXXForm.MsgProc(var Message);
    begin
    //
    end;
      

  2.   

    第一种方法var
      Form1: TForm1;
    const
      WM_SHAKEHAND = WM_USER + 3333;
    procedure WndProc( var msg: TMessage ); override;
    procedure TForm1.WndProc(var msg: TMessage);
    begin
      case msg.msg of WM_SHAKEHAND :
    begin
        //YourReceiveProc( msg.LParam, msg.WParam );
          SendMessage(msg.LParam,WM_SHAKEHAND,0,Self.Handle);
          showMessage('接受到了');
    end;  end;
      inherited WndProc(msg);
    end;第二种方法
        procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;procedure TForm1.Mymessage(var t:TWmCopyData);
    begin
       Edit1.text:=StrPas(t.CopyDataStruct^.lpData);//接受数据并显示。
    end;
    发送消息代码两种都有,自己区分一下:
    var
      HChild: Hwnd;
      ds: TCopyDataStruct;
    begin
        ds.cbData := Length (Edit1.Text) + 1;
        GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存
        StrCopy (ds.lpData, PChar (Edit1.Text));    HChild := FindWindow(nil,PChar('窗口的名字'));
        if HChild <>0 then
        begin
            SendMessage (HChild, WM_COPYDATA, Handle ,Cardinal(@ds)); // 发送WM_COPYDATA消息        PostMessage(HChild ,WM_SHAKEHAND,0,0);
            ShowMessage('发送消息了!');
        end;
        FreeMem (ds.lpData); //释放资源    //SendMessage(HChild,WM_SHAKEHAND,0,0);
      

  3.   

    Socket监听程序会给我机器上一个叫“信令测试任务”的窗体发送消息???
    Socket监听程序是如何发送消息的?Socket监听程序是自己写的程序?