您好,winapi sendmessage  与 postmessage 的参数是怎么定义的? 
     还有那些api可以用在进程间的消息处理中? 
     消息循环是怎样的一个概念? 初学,谢谢您的指导。

解决方案 »

  1.   

    API声明如下:
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    参数说明:
    sendmessage:
          hwnd:要使用此函数的窗体句柄(或程序句柄)
          wMsg:要发送的消息
          wParam:参数
          Iparam:参数
    postmessage同上
    注意:二者皆可发消息,但postmessage发消息后并不会反回消息.
      

  2.   

    他们的含义和名字很符合:sendmessage:send,发送。邮递员送信,要保证送到目的地。sendmessage发送消息后,要等到消息已经被正确接收,并返回一个值。
    postmessage:post,张贴。你到电线杆上张贴广告,只管贴到那里,至于有没有人看就不管了。
      

  3.   

    SendMessage(Self.Handle,WM_SYSCOMMAND,SC_CLOSE,0);
    PostMessage(Self.Handle,WM_SYSCOMMAND,SC_CLOSE,0);
    SendMessage等消息被处理以后才返回,PostMessage是向Application提交一个消息,放到消息队列中等待执行,PostMessage只要一提交成功就返回,不管这个消息有没被处理。
      

  4.   

    谢谢大家的帮助,我再将问题细化一下。怎样让两个应用程序通讯?  比如 有两个应用程序: 1 个 只有一个 form,一个 输入框(edit),
                         另一个: 只有一个form,一个文本控件(label)
      我想要实现:
         在程序1 edit1中输入的内容在 程序2的label 中显示出来。
      请问我该怎样用sendmessage 和 postmessage 处理? 谢谢大家。
      

  5.   

    你要选得到Label 的句柄,
    然后对它发WM_SETTEXT消息即可var 
      S : PChar;
      Handle : TWnd;Handle :=........;
    GetMem(S);
    S:=PChar(Edit.Text);
    sendmessage (Handle,WM_SETTEXT,LongInt(S),0);
    FreeMem(S);
      

  6.   

    发送消息。请参阅《delphi4 开发大全》  徐新华译
      

  7.   

    SendMessage和PostMessage可以在应用程序之间用吗?我感觉好象不行?是不是我的概念错了?
    你这种情况一般是应该用DDE(动态数据交换,现在很少用了),最好是用Socket在不同进程间传递数据.
      

  8.   

    windofsun(太阳风) 说的很生动,我喜欢这样的语言