关于Dll向exe发送消息,请教windows编程高手(50分)

  • 主题发起人 主题发起人 无地自容
  • 开始时间 开始时间

无地自容

Unregistered / Unconfirmed
GUEST, unregistred user!
小的最近在做一个钩子,当dll勾到消息之后,需要向程序发送消息,<br>来激活一个浮动窗口,消息发出以后,如果窗体是最小化在工具栏上时<br>不能收到这个消息,即不触发onMessage事件<br>应用程序的主窗体设置为隐藏Application.ShowMainform := false ;<br>本人对windows编程不是十分熟悉,请教各位高手:<br>为何应用程序在最小化时对消息不响应 ?<br>在窗体对窗体的消息发送,我最后用如下方法可以使最小化的窗口响应message &nbsp; &nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; ShowWindow(Receiver,SW_SHOWNORMAL) ; <br>&nbsp; &nbsp; &nbsp; SendMessage(Receiver,msg_ID,0,0) ;<br>但是使用相同的方法在dll向应用程序发送时,不能在onmessage中响应,郁闷
 
const<br>&nbsp; WM_MYMSG = WM_USER + 100; <br><br>DLL端:<br>&nbsp; wnd := FindWindow('TmyMainForm',nil); //注意大小写<br>&nbsp; if IsWindow(wnd) then<br>&nbsp; &nbsp;postMessage(wnd, WM_MYMSG, 0, 0);<br><br>EXE端:<br>interface<br>&nbsp; procedure ON_WM_MYMSG(var Msg: Tmessage); message WM_MYMSG;<br><br>implementation<br>procedure ON_WM_MYMSG(var Msg: Tmessage);<br>begin<br>&nbsp; //you code<br>end;<br>
 
共享内存文件
 
To alac: 我的做法和你相同,但是没有收到消息...估计问题出在内存单元<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;的共享上面,我这个dll里面是个钩子,安装Hook以后,每触发一次<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;钩子处理过程,体统就把dll映射到当前进程的空间中,也就是说:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;内存中有多个dll实例,因此造成该问题&gt;&gt;&gt;<br>To 爱元元的哥哥: 你的做法我还没试验,估计是可行的<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;你要好好爱元元 &nbsp;:) &nbsp;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 感谢两位的关注,放分&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &nbsp; &nbsp;
 
多人接受答案了。
 
后退
顶部