http://www.autoitx.com/forum.php?mod=viewthread&tid=3947&extra=page%3D1
UDF 很不错,通过这次也学习了不少... 没用QQN久了。。。不清楚帮你。。。 本帖最后由 boy_zhuj 于 2012-1-10 22:35 编辑
感谢楼上的同学努力帮忙,还特意找了 Udf ,先谢谢了。不过有个最大的问题 ,群的 窗口大多数时候是 3对象的,但如果点击消息记录 后,或者是消息记录之后的状态都是2个对象啦 ,就和讨论组一样了!
而且 对于QQ 聊天窗口 ,在线时能正确判断,如果离线,就会判定为 讨论组的
个人 认为 最保险的方式是根据窗口图标判断了,可是没有任何方法获取哦 本帖最后由 afan 于 2012-1-11 23:21 编辑
本帖最后由 boy_zhuj 于 2012-1-11 10:58 编辑
谢谢afan,判断的效率和准确性都提高了。源码需要购买吗?
除了可能误判情况 :如果都是 消息记录窗口打开的,聊天和讨论组都是会判断成群窗口的 回复 20# boy_zhuj
19#修改了下,可以试试~
源码当然不需要购买,只是你可以自己先试试我之前说的。
枚举其子窗口,或许都有不同的“特色”窗口。
afan 发表于 2012-1-10 18:20 http://www.autoitx.com/images/common/back.gif
_WinAPI_EnumChildWindows() 本帖最后由 boy_zhuj 于 2012-1-12 13:32 编辑
试了一下,发现群和聊天的窗口都是有三一模一样类型的子窗口啊 ,如
|3|
|0x00040296|Shell Embedding
|0x000401C6|Shell DocObject View
|0x000601C0|Internet Explorer_Server
还是没法判断啊,还望 Afan 指教 啊
是不是再枚举 子窗口啊 ? 可捕获的控件 ATL:30A4D1D81 其位置或大小会不同,可以 ControlGetPos() 一下 诶,又出问题了 ,ControlGetPos()如果是中文父窗口,我怎么都取不出,都是0啊 #include <WinAPIEx.au3>
Local $aAW = WinList('')
Local $aCW, $aCP, $i, $CFlag = 0, $sInfo = ''
For $i = 1 To $aAW
$aCW = _WinAPI_EnumChildWindows($aAW[$i], 0)
If @error Then ContinueLoop
If $aCW = 4 Or $aCW = 9 Then
$sInfo &= '句柄:' & $aAW[$i] & ' 群组窗口 : "' & $aAW[$i] & '"' & @CRLF
$CFlag += 1
ElseIf $aCW = 1 Or $aCW = 6 Then
$aCP = ControlGetPos($aAW[$i], '', 'ATL:30A4D1D81')
If @error Then ContinueLoop
If $aCP = 0 Or $aCP = 16 Then
$sInfo &= '句柄:' & $aAW[$i] & ' 聊天窗口 : "' & $aAW[$i] & '"' & @CRLF
$CFlag += 1
ElseIf $aCP = 15 Then
$sInfo &= '句柄:' & $aAW[$i] & ' 讨论组窗口: "' & $aAW[$i] & '"' & @CRLF
$CFlag += 1
EndIf
EndIf
Next
If Not $CFlag Then
MsgBox(48, '问题', '没 TM 窗口')
Else
MsgBox(64, '检索到 ' & $CFlag & ' 个TM窗口', $sInfo)
EndIf 偶的神啊 ,反应怎么这么快啊 ,老大竟然放出源码.{:face (356):} 正式结贴,最后一个问题,怎么把本贴发到已解决啊 ,我看了半天没找到移动的方式啊 回复 26# boy_zhuj
编辑标题,添加“已解决”字符即可。 M2009的个人聊天窗口,群窗口和讨论组
页:
1
[2]