据说用消息 可以在 (1)应用程序内部 (2) 应用程序之间 (3) 线程内部 (4) 线程之间 通信 
哪位大哥能给我贴个例子源码,就是关于消息通信编程的实例代码,每个源码20分,不够再加,谢谢!

解决方案 »

  1.   

    postmessage(目标handle,消息编号,参数1,参数2)
      

  2.   

    建议楼主看看<Windows核心编程>,在第六部分有讲消息,也有很多例子,好好学学.
      

  3.   

     消息一般是发给一个窗口的.应用程序内部,应用程序之间,只有有窗口,就可以给对应的窗口发消息,实现通讯.线程内部,线程之间:  可以在线程内部使用AllocateHWnd建立一个不可视的window.其它线程,往这个window发消息就可以了.具体,参考TTimer的代码
      

  4.   

    发送消息,
    perform,sendmessage,postmessage
    perform可以向任何一个窗体或组件发送消息,只需要知道窗体或组件的实例即可,
    调用perform方法后要等消息得到处理后才返回
    其他的不多说了,还是去参考下书籍
      

  5.   

    這是我學delphi win32api參考里的例子
    發送方代碼:
    var
      Form1: TForm1;
      UserMessage:UINT;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      Recipients:DWORD;
    begin
      Recipients:=BSM_APPLICATIONS;
      BroadcastSystemMessage(BSF_IGNORECURRENTTASK or BSF_POSTMESSAGE,
                              @Recipients,
                              UserMessage,
                              0,
                              0,);end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      UserMessage:=RegisterWindowMessage('CallWindowProc test Message');
    end;接收方代碼:
    var
      Form1: TForm1;
      UserMessage:UINT;
      OldWindowProc:TFNWndProc;implementation{$R *.dfm}function NewWindowProc(TheWindow:HWND;Msg:Integer;wParam:WPARAM;lPAram:LPARAM):Longint;
    var
      iLoop:Integer;
    begin
      if Msg=UserMessage then
      begin
        Form1.ProgressBar1.Visible:=True;
        Form1.Label2.Visible:=true;
        
        form1.Repaint;    for iLoop:=0 to 100 do
        begin
          Form1.ProgressBar1.Position:=iLoop;
          Sleep(10);
        end;    form1.ProgressBar1.Visible:=false;
        form1.Label2.Visible:=false;    result:=1;
      end
      else
        result:=CallwindowProc(OldwindowProc,TheWindow,Msg,wParam,lParam);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      UserMessage:=RegisterWindowMessage('CallWindowProc Test Message');  OldWindowProc:=TFNWndProc(SetWindowLong(Form1.Handle,GWL_WNDPROC,Longint(@NewWindowProc)));
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      SetWindowLong(Form1.Handle,GWL_WNDPROC,Longint(OldWindowProc));
    end;希望對你有用,呵呵
      

  6.   

    delphi5人员开发指南,有详细介绍
      

  7.   

    谢谢你的关心,说的很有道理,是应该系统的看书.
    其实 书我看了 主要看了 两本
    一本是<delphi5 开发人员指南> 还有一本是 <Delphi+7+程序设计与开发技术大全> 里面也有些代码 
    不过像 (1)在应用程序之间发送消息 (2)进程之间发送消息 的源码书中没有介绍.
    我是想请有开发经验的 前辈们贴点 相关代码 研读下,加深这方面的理解.
    至于 <windowWindows核心编程 > 这本书 目前还没看,知识浏览了一下 准备细细看看 消息这部分.
    希望各位 继续贴点源码啊!
      

  8.   

    postmessage
    SendMessage
    这些都是可以的
    建议看一下Windows的消息机制
      

  9.   

    定义
    procedure WMIme(var Msg: TMessage); message WM_KEYDOWN;实现
    procedure TFrmMain.WMIme(var Msg: TMessage);
    var
      val: string;
    begin
      MessageBox(Msg.WParam, PChar('test'), 'Warning', 0);
    end;
      

  10.   

    自己处理一下自己定义的消息,然后POST
      

  11.   

    楼主这样只看一些代码片断,而不去系统地学一学Windows的消息机制,对你的进步是不利的.劝你的人不少,还是先看书吧,Windows核心编程.
      

  12.   

    Sendmessage(handle,消息编号,参数1,参数2)