找回密码
 加入
搜索
查看: 1321|回复: 8

[已解决]怎么筛选QQ的所有的已打开的窗口名

[复制链接]
发表于 2009-7-8 11:26:19 | 显示全部楼层 |阅读模式
本帖最后由 zuiyi 于 2009-8-3 23:58 编辑

如题,WinList("","")或WinGetProcess("","")中的参数要怎么设置,就可以筛选出QQ所有已打开的聊天窗口。。。或用其它的什么函数?望高手指点指点~~
发表于 2009-7-10 03:19:35 | 显示全部楼层
#include <winapi.au3>
Local  $iProcessID
$pid=ProcessExists("QQ.exe")
Sleep(1000) 
$wlis=WinList()
for $i=1 to $wlis[0][0]
if $wlis[$i][0]<> "" AND IsVisible($wlis[$i][1]) then
_WinAPI_GetWindowThreadProcessId($wlis[$i][1], $iProcessID) 
If not StringCompare($iProcessID,$pid) AND  not  StringInStr($wlis[$i][0], "QQ")then 
MsgBox(0,"t",$wlis[$i][0])
EndIf
EndIf
Next
Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then 
    Return 1
  Else
    Return 0
  EndIf
EndFunc
发表于 2009-7-10 03:25:34 | 显示全部楼层
思路简析:
先用WinList枚举所有的窗口,得到句柄
再GetWindowThreadProcessId得到的pid再与QQ进程的PID对比
就可以得到窗口标题了
发表于 2009-7-14 13:04:50 | 显示全部楼层
lynfr8 好崇拜你
发表于 2009-7-14 13:05:02 | 显示全部楼层
lynfr8 好崇拜你
发表于 2009-7-14 16:05:18 | 显示全部楼层
$a = WinList()
$b = ProcessList('QQ.exe')

For $i = 1 To $a[0][0]
        For $k = 1 To $b[0][0]
        If $b[$k][1] = WinGetProcess($a[$i][1]) And _
                                StringRegExp($a[$i][0], '交谈中|群') Then MsgBox(0,0, $a[$i][0] & @CR & $a[$i][1] & @CR & WinGetProcess($a[$i][1]))
        Next
Next
发表于 2009-7-20 19:40:35 | 显示全部楼层
那么怎样获取QQ号码呢?
发表于 2009-7-27 16:37:27 | 显示全部楼层
发表于 2009-8-8 18:39:02 | 显示全部楼层
那么怎样获取QQ号码呢?
joyoustar 发表于 2009-7-20 19:40


http://www.autoitx.com/forum.php?mod=viewthread&tid=7987&page=1&fromuid=1003#pid66727
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 09:36 , Processed in 0.074156 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表