procedure CatchWMCOPYDATA(var Msg:WMCOPYDATA);message WM_COPYDATA;
.......procedure CatchWMCOPYDATA(var Msg:WMCOPYDATA);
begin
  if Msg.Code=.... then
    ....
end;

解决方案 »

  1.   

    我不知道DLL在映射到程序里面以后和主程序有什么不同,完全是一样的啊!没有特殊的地方。请在DLL中建立一个不可见的窗口,用来接收消息,在主程序中(仅限于Delphi),之所以可以用
    CatchWMCOPYDATA(var Msg:WMCOPYDATA);message WM_COPYDATA;
    这样的申明来接受消息,原因很简单,Application对象建立了一个不可见的窗口处理了,而且它控制了消息循环,他建立的机制可以使得消息被正确的发送。但是,在DLL中他不知道主程序是谁,他当然不知道,因为他又不是只是被Delphi开发的程序调用。所以请你手工建立一个窗口来接受这个消息,当然如果你的DLL中使用了TControl继承的对象,那么在这个对象中使用上述的申明也是同样可以获得消息的。