W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-29 #1 小弟写了一个dll来监听QQ是否关闭<br>当QQ关闭后,想通过SendMessage给我的exe发送一个消息<br>我的这个exe响应了这个消息后马上重新打开QQ<br><br>现在小弟不明白DLL给exe发送啥消息<br>然后exe怎么样去响应这个消息<br><br>请大家帮忙出个主意。。
小弟写了一个dll来监听QQ是否关闭<br>当QQ关闭后,想通过SendMessage给我的exe发送一个消息<br>我的这个exe响应了这个消息后马上重新打开QQ<br><br>现在小弟不明白DLL给exe发送啥消息<br>然后exe怎么样去响应这个消息<br><br>请大家帮忙出个主意。。
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-29 #3 楼上的兄弟<br><br>我提到QQ只是做个比喻<br><br>不知道你的话里是不是有其他意思
B bbscom Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #4 你先做两个EXE程序<br>此EXE程序里的代码:<br>var<br> whd: HWND;<br>begin<br> whd := FindWindow(nil, PChar(另一程序的Caption));<br> PostMessage(whd, WM_APP, 0, 0);<br>end;<br><br>再在另一EXE程序里的代码:<br>procedure MyMsg(var Msg: TMessage); message WM_APP;<br><br>procedure TFrmMain.MyMsg(var Msg: TMessage);<br>begin<br> ShowMessage('收到你的信息。');<br>end;
你先做两个EXE程序<br>此EXE程序里的代码:<br>var<br> whd: HWND;<br>begin<br> whd := FindWindow(nil, PChar(另一程序的Caption));<br> PostMessage(whd, WM_APP, 0, 0);<br>end;<br><br>再在另一EXE程序里的代码:<br>procedure MyMsg(var Msg: TMessage); message WM_APP;<br><br>procedure TFrmMain.MyMsg(var Msg: TMessage);<br>begin<br> ShowMessage('收到你的信息。');<br>end;
H hzjzxp Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #5 同意楼上的,但是不过你的dll怎么监听这个消息呀!最终还是要以exe方式驻扎在内存在运行!
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #7 to:bbscom,我去改到dll里试下<br>to:hzjzxp,我说了拿QQ只是个例子,我说是dll当然有我的办法驻扎内存了<br>to:清新空气,我说了拿QQ只是个例子,别钻牛角尖了
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #8 TO bbscom:<br>我在两个dll里分别按您说的去做了<br>但是,没有成功<br><br>WM_APP发送是成功了<br>但是另外一个exe没有响应
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #9 TO bbscom:<br> 我把您给的代码写在一个exe里才可以
迷 迷 路 人 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #10 自己定义一个消息啊,只要你知道消息的意思就好了啊.<br>const <br>SX_MYMESSAGE=WM_USER+100;<br>然后 发送消息<br>SendMessage(someform.handle,SX_MYMESSAGE,0,0);<br>在控制QQ的程序里写SX_MYMESSAGE的消息响应函数
自己定义一个消息啊,只要你知道消息的意思就好了啊.<br>const <br>SX_MYMESSAGE=WM_USER+100;<br>然后 发送消息<br>SendMessage(someform.handle,SX_MYMESSAGE,0,0);<br>在控制QQ的程序里写SX_MYMESSAGE的消息响应函数
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #11 to:迷 路 人<br><br>在两个exe里我都自定义了同样的消息<br>const<br> WM_MYTEST = WM_USER + 100;<br><br>但是,控制QQ这个EXE没有响应这个消息
to:迷 路 人<br><br>在两个exe里我都自定义了同样的消息<br>const<br> WM_MYTEST = WM_USER + 100;<br><br>但是,控制QQ这个EXE没有响应这个消息
迷 迷 路 人 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #12 控制QQ的程序应该不需要再定义了啊,直接从消息队列里检索WM_MYTEST,<br>刚翻了下书,应用程序之间的消息最好还要调用RegisterWindowsMessage()这个API的,你去帮助里面看看这个API.
控制QQ的程序应该不需要再定义了啊,直接从消息队列里检索WM_MYTEST,<br>刚翻了下书,应用程序之间的消息最好还要调用RegisterWindowsMessage()这个API的,你去帮助里面看看这个API.
清 清新空气 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #13 你这个思想不成立!<br>QQ是你开发的?关闭后就给你的另一个exe发送个消息?<br>没看到“我爱PASCAL”怎么说的!呵呵!<br>你只能用你的exe做个实时监听QQ,发现QQ关闭就立刻启动;
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #14 to 清新空气:<br>那这样的思路总没问题吧<br>我写一个IE的dll插件<br>这个插件发现IE关闭后就给我写的exe发送消息<br><br>这样OK?
清 清新空气 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #15 不清楚你的插件的原理!<br>如果是我,可能我会去写个服务,每2秒去找一次QQ或IE,只要没有就启动;
清 清新空气 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #16 你这种是最基本的网络服务器的监听原理;<br>外接别人的程序做实施就会遇到这种情况;
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #17 IE插件用ATL写<br>有一个procedure DoOnQuit;<br>在这里放消息发送代码<br><br>我做过测试,如在这里放一个发送WM_CLOSE的消息<br>倒是可以关闭指定的程序<br><br>如果是发送其他消息让偶的程序响应就不行了
IE插件用ATL写<br>有一个procedure DoOnQuit;<br>在这里放消息发送代码<br><br>我做过测试,如在这里放一个发送WM_CLOSE的消息<br>倒是可以关闭指定的程序<br><br>如果是发送其他消息让偶的程序响应就不行了
W wynney Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #19 没用过ATL <br>那最起码的事件过程你应该明白吧<br>我不是非要你回答我这个问题,帮我解决这个问题<br>只是希望你不要给我抬扛,谢谢
白 白河愁 Unregistered / Unconfirmed GUEST, unregistred user! 2007-06-30 #20 那简单,如果你的 DLL 能注入 QQ的话,那QQ关闭的时候你的 DLL 就会发生 DETACH 事件,在那里 POST 一个 MESSAGE 给你另外的程序就行了。
那简单,如果你的 DLL 能注入 QQ的话,那QQ关闭的时候你的 DLL 就会发生 DETACH 事件,在那里 POST 一个 MESSAGE 给你另外的程序就行了。