dll 产生一个消息,在应用程序中 做处理谁给我讲讲  或给我一些资料谢谢 ,很急  。

解决方案 »

  1.   

    DLL中用SendMessage()函数向 应用程序发送消息,有四个参数:
    1.应用程序的窗口句柄,可以在应用程序调用dll时通过函数传给dll
    2.消息ID,需要在dll和调用dll的程序中做相同的定义,比如 vc中 #define WM_MESSAGE1 WM_USER+100,delphi中 const WM_MESSAGE1= WM_USER+100
    3.4分别为wparam,lparam,将发送的消息放到这两个变量里,比如dll向应用程序发送50,就可以指定第三个参数为50
    应用程序想接收这个消息,就必须先定义消息const WM_MESSAGE1= WM_USER+100,然后定义消息结构,比如:
    type
    TmyMessage = record
     MSGID: Cardinal;
     wParam: WPARAM;
     lParam: LPARAM;
    end;
    然后还要定义相应的消息处理过程,如下:
    procedure ProcessMessage(var message:TmyMessage);message WM_MESSAGE1;
    这样在这个过程中就可以接收消息了
      

  2.   

    ///////////你好,我下面这样做,但是收不到消息,,,请问为什么啊////////xxx.DLL///////
    const MyMessage =wm_user+100;
    type
      TMyMessage=record
        s1:pchar;
        s2:pchar;
      end;
    procedure  xxx();  stdcall;
    var 
    MyMsg:^TMyMessage;
    begin
      New(MyMsg);
      MyMsg.s1:='dsjfh';
      MyMsg.s2:='dsfjl';
      SendMessage(HWND_BROADCAST,MyMessage,123,0);
    end;
    //////////应用程序/////////
       const MyMessage =wm_user+100;
      type
        TMyMessage=record
        s1:pchar;
        s2:pchar;
      end;  private
       procedure DecodedDataMessage(var msg:TMessage);message MyMessage;procedure TForm1.DecodedDataMessage(var msg: TMessage);
    var
      MyMsg:^TMyMessage;
    begin
      MyMsg:=Pointer(msg.WParam);
      showmessage('s1='+MyMsg.s1+' s2='+MyMsg.s2);
      Dispose(MyMsg);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    InitSystem();
    end;
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    InitSystem();///错了,,是procedure  xxx();  stdcall;
    end;
    是不是
    SendMessage(HWND_BROADCAST,MyMessage,123,0);  的HWND_BROADCAST 参数用的对吗我真的找不到原因了
      

  4.   

    只要这样做就可以了
    SendMessage(HWND_BROADCAST,MyMessage,123,0);
      

  5.   

    看看你的接收窗口的wndproc里是怎么写的?
      

  6.   

    应用程序调用dll的时候可以先吧handle传给dll。然后dllsendmessage就有目地了
      

  7.   

    nimittz(尼米兹---------努力升星GOGOGO) 我就是用SendMessage(HWND_BROADCAST,MyMessage,123,0); 做的,但是收不到消息xixuemao(吸血猫) 
    怎样把 handl传给dll呢
      

  8.   

    仔细看看我的回复:
    DLL中用SendMessage()函数向 应用程序发送消息,有四个参数:
    1.应用程序的窗口句柄,可以在应用程序调用dll时通过函数传给dll
    就是在dll中定义一个导出函数,其中有一个参数就是HWND类型
    然后在应用程序中调用这个函数不就行了
    另外,定义消息的结构时第一项应该是消息ID,就像我定义的那样
    你仔细看看我的回复,要不我就白写那么多了
      

  9.   

    在dll中不用定义消息结构,直接将要传递的信息,作为SendMessage()的后两个参数就行了
      

  10.   

    谢谢 rabbitlzx(踏雪飞鸿) 
    再有,我问一下,,如果有很多消息呢,,难道每个消息都要一个单独的处理过程吗可不可以把他们放到一个过程中处理呢