关于关闭oicq2000的问题,我为何无法关闭它呢?(附简单代码)哪位高手帮我改改!谢谢(0分)

  • 主题发起人 主题发起人 ch_yahuu
  • 开始时间 开始时间
C

ch_yahuu

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;<br><br>interface<br><br>uses<br>&nbsp; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br>&nbsp; ExtCtrls, StdCtrls, Buttons;<br><br>type<br>&nbsp; TForm1 = class(TForm)<br>&nbsp; &nbsp; BitBtn1: TBitBtn;<br>&nbsp; &nbsp; BitBtn2: TBitBtn;<br>&nbsp; &nbsp; procedure BitBtn1Click(Sender: TObject);<br>&nbsp; &nbsp; procedure BitBtn2Click(Sender: TObject);<br>&nbsp; private<br>&nbsp; &nbsp; { Private declarations }<br>&nbsp; public<br>&nbsp; &nbsp; { Public declarations }<br>&nbsp; end;<br><br>var<br>&nbsp; Form1: TForm1;<br><br>implementation<br><br>{$R *.DFM}<br><br>procedure TForm1.BitBtn1Click(Sender: TObject);<br>begin<br>if findwindow('#32770',nil)&lt;&gt;0 then//我早找出他的类名了。<br>showmessage('oicq is running!')<br>else<br>showmessage('oicq is not running!');<br>end;<br>//上面的代码均成功。。但是下面要关它的时候,却关不了。。是不是窗口句柄找错了,但我找了多少次都是这一个。<br>没有办法了,只好贴出来由大家解决了。。。。<br>procedure TForm1.BitBtn2Click(Sender: TObject);<br>var cl:hwnd;<br>begin<br>cl:=findwindow('#32770',nil);<br>sendmessage(cl,wm_close,0,0);<br>end;<br><br>end.<br>
 
你试试findwindow(nil,'QQ 用户登陆');
 
TO::redlegend_126_com<br><br>&nbsp;那个我知道.我是问他登陆后.怎么关闭它.!如果把句柄换成:findwindow(nil,'动态的QQ号')倒是可以关掉./<br>但每一个人用QQ,QQ号都会不一样.我怎么关啊?
 
如果 findwindow('#32770',nil) 找出的 hwnd 不能关掉<br>而 findwindow(nil,'动态的QQ号') 找出的 hwnd 可以关掉<br>那么说明他的类名 #32770 不仅有一个窗口,而可能多个窗口使用了这个类名<br>那么只好 &nbsp;EnumWindows 然后每个窗口 GetClassName、GetWindowText判断了
 
不过,我发现我的qq的主窗口的类名是“#32770:Dialog”而不是“#32770”
 
“#32770:Dialog”里面的冒号是全角还是半角没看清
 
看来这个类名不能用,我查到好多窗口都是这个类,甚至outlook express!<br>看来只能用<br>EnumWindows 然后每个窗口 GetClassName、GetWindowText先检查一下<br>更精密的:GetWindowThreadProcessId 得到那个窗口所属的process id,然后检查这个process<br>是什么进程!
 
#32770这个类名只要是vc写的基于对话框的都是这个类名<br>而后面的:Dialog不属于这个类名的一部分,是跟踪软件自动加的<br>如果要查找QQ的窗口<br>只能EnumWindow后,得到QQ窗口的特征再发WM_CLOSE。
 
&gt; #32770这个类名只要是vc写的基于对话框的都是这个类名<br>&gt; 而后面的:Dialog不属于这个类名的一部分,是跟踪软件自动加的<br>哦,真是
 
遍历窗口,然后对于窗口Title内容是数字的就可以考虑关掉。<br>
 
hr:=FindWindow('#32770',nil);<br>hr:=GetNextWindow(hr,GW_HWNDNEXT);<br>SendMessage(hr,WM_CLOSE,0,0);
 
后退
顶部