SendMessage/PostMessage的难题,论者有分 ( 积分: 100 )

  • 主题发起人 主题发起人 wynney
  • 开始时间 开始时间
W

wynney

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