有个问题,大家帮忙:
有两个程序a.exe和b.exe。
怎么能让窗口a和窗口b相互用sendmessage()发送消息?
两个窗口怎么互相取得对方的handle?

解决方案 »

  1.   

    如果是在一个程序中的两个窗口,直接调用窗口的Perform就可以了
      

  2.   

    A中用
    nHandle : THandle;
    Handle := FindWindow(NIL,pchar(B窗口的标题));Sendmessage(nHandle,.....);
    就行了。
    而B反过来也行。
      

  3.   

    发送端:
    procedure Init;
    var
      s                 : pchar;
      h                 : hwnd;
      buf:tagCOPYDATASTRUCT;
    begin
      h := FindWindow('TForm1', NIL);
      if h <> 0 then
      begin
        GetMem(s,100);
        buf.lpData :=s;
        buf.cbData:=100;
        buf.dwData :=100;
        strpcopy(s, ParamStr(0));
        SendMessage(h, WM_COPYDATA, 0, integer(@buf));
      end;
    end;接收端:
    procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA; procedure TForm1.WM_COPYDATA(var msg: TMessage);
    var
      P:^tagCOPYDATASTRUCT;
    begin
      p:=Pointer(Msg.lParam);
      ShowMessage(strpas(p.lpData));
    end;
      

  4.   

    用Sockect通讯不就可以通讯了,a和b都有一个SocketServer和一个SocketClient