zuiyi 发表于 2009-7-8 11:26:19

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

本帖最后由 zuiyi 于 2009-8-3 23:58 编辑

如题,WinList("","")或WinGetProcess("","")中的参数要怎么设置,就可以筛选出QQ所有已打开的聊天窗口。。。或用其它的什么函数?望高手指点指点~~

lynfr8 发表于 2009-7-10 03:19:35

#include <winapi.au3>
Local$iProcessID
$pid=ProcessExists("QQ.exe")
Sleep(1000)
$wlis=WinList()
for $i=1 to $wlis
if $wlis[$i]<> "" AND IsVisible($wlis[$i]) then
_WinAPI_GetWindowThreadProcessId($wlis[$i], $iProcessID)
If not StringCompare($iProcessID,$pid) ANDnotStringInStr($wlis[$i], "QQ")then
MsgBox(0,"t",$wlis[$i])
EndIf
EndIf
Next
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
Else
    Return 0
EndIf
EndFunc

lynfr8 发表于 2009-7-10 03:25:34

思路简析:
先用WinList枚举所有的窗口,得到句柄
再GetWindowThreadProcessId得到的pid再与QQ进程的PID对比
就可以得到窗口标题了

wjs3325120 发表于 2009-7-14 13:04:50

lynfr8 好崇拜你:face (29):

wjs3325120 发表于 2009-7-14 13:05:02

lynfr8 好崇拜你:face (29):

liongodmien 发表于 2009-7-14 16:05:18

$a = WinList()
$b = ProcessList('QQ.exe')

For $i = 1 To $a
        For $k = 1 To $b
      If $b[$k] = WinGetProcess($a[$i]) And _
                                StringRegExp($a[$i], '交谈中|群') Then MsgBox(0,0, $a[$i] & @CR & $a[$i] & @CR & WinGetProcess($a[$i]))
        Next
Next

joyoustar 发表于 2009-7-20 19:40:35

那么怎样获取QQ号码呢?

foxdcj 发表于 2009-7-27 16:37:27

:face (3):

lynfr8 发表于 2009-8-8 18:39:02

那么怎样获取QQ号码呢?
joyoustar 发表于 2009-7-20 19:40 http://www.autoitx.com/images/common/back.gif

http://www.autoitx.com/forum.php?mod=viewthread&tid=7987&page=1&fromuid=1003#pid66727
页: [1]
查看完整版本: [已解决]怎么筛选QQ的所有的已打开的窗口名