使用postmessage(HWND_BROADCAST,WM_MSG,0,1);欲将信息传递给另一个application,请问如何实时接收该信息?
我定义了procedure GetMsg(var Msg:Tmessage);message WM_MSG;可是不管用,请高手指教````````

解决方案 »

  1.   

    postmessage的第一个参数是你要接收消息处理的应用程序的句柄。可以用findwindow函数获得.
      

  2.   

    可不可以使用共享内存??
    先将数据写入shared memory然后发出消息,然后,另一个process收到消息读shared memory ...
    你的两个process必然不是同时启动的.因此,在任何一个启动的时候,检查shared memory,如果有其他process的ID,就读取并保存,然后写入自己的process ID,之后向先前的process发送消息---我已经写入了我的process ID了,快来读! ;如果没有,就向shared memory中写入自己的process ID,然后等待其他process发来的通知消息即可.
        这样知道了,对方process的ID 应该其他的就容易了吧??
      

  3.   

    详细情况是这样的,我不想做一个timer实时监控数据库的变化,希望做一个OCX文件让coldfusion调用,一旦b/s修改了数据库,同时向我的服务器端软件传递一个数据库更改通知。
    在消息发送端我定义的是:
    const
      WM_MSG = WM_USER+1000;



    postmessage(findwindow(pchar('ReceivePro'),nil),WM_MSG,0,1);接收端:
    const
      WM_MSG = WM_USER+1000;



    private
         procedure GetMsg(var Msg:Tmessage);message WM_MSG;


    procedure TForm1.GetMsg(var Msg:TMessage);
    begin
       if msg.WParam=0 then edit1.Text:='ok'
       else edit1.Text:='fail';
       if Msg.LParam=1 then edit2.Text:='ok'
       else Edit2.Text:='fail';
    end;结果没有反应```:~(
    这是我第一次尝试使用windows的消息机制,理解的还是有偏差```希望大家不要笑话我`````谢了
      

  4.   

    你的消息内容在哪儿呢 ?------------------------------------------
    s := '1234' ;postmessage(findwindow(pchar('ReceivePro'),nil),WM_MSG,0,Integer(s));
    procedure TForm1.GetMsg(var Msg:TMessage);
    begin
      Edit1.Text := String(Msg.LParam) ;  
    end;
      

  5.   

    这种方法只能在进程内部传递消息````我希望在两个不同的application之间传递消息,怎么办?