找回密码
 加入
搜索
楼主: boy_zhuj

[GUI管理] 如何 区分TM2009的个人聊天窗口,群窗口和讨论组窗口[已解决]

 火.. [复制链接]
发表于 2012-1-10 19:40:56 | 显示全部楼层
详情可以参考:
http://www.autoitx.com/forum.php ... &extra=page%3D1

UDF 很不错,通过这次也学习了不少...
发表于 2012-1-10 20:45:50 | 显示全部楼层
没用QQN久了。。。不清楚帮你。。。
 楼主| 发表于 2012-1-10 22:28:27 | 显示全部楼层
本帖最后由 boy_zhuj 于 2012-1-10 22:35 编辑

感谢楼上的同学努力帮忙,还特意找了 Udf ,先谢谢了。不过有个最大的问题 ,群的 窗口大多数时候是 3对象的,但如果点击消息记录 后,或者是消息记录之后的状态都是2个对象啦 ,就和讨论组一样了!


而且 对于QQ 聊天窗口 ,在线时能正确判断,如果离线,就会判定为 讨论组的


个人 认为 最保险的方式是根据窗口图标判断了,可是没有任何方法获取哦
发表于 2012-1-11 02:15:14 | 显示全部楼层
本帖最后由 afan 于 2012-1-11 23:21 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-1-11 10:39:39 | 显示全部楼层
本帖最后由 boy_zhuj 于 2012-1-11 10:58 编辑

谢谢afan,判断的效率和准确性都提高了。源码需要购买吗?

除了可能误判情况 :如果都是 消息记录窗口打开的,聊天和讨论组都是会判断成群窗口的
发表于 2012-1-11 23:26:41 | 显示全部楼层
回复 20# boy_zhuj


    19#修改了下,可以试试~

源码当然不需要购买,只是你可以自己先试试我之前说的。
枚举其子窗口,或许都有不同的“特色”窗口。
afan 发表于 2012-1-10 18:20


_WinAPI_EnumChildWindows()
 楼主| 发表于 2012-1-12 13:30:45 | 显示全部楼层
本帖最后由 boy_zhuj 于 2012-1-12 13:32 编辑

试了一下,发现群和聊天的窗口都是有三一模一样类型的子窗口啊 ,如

[0]|3|
[1]|0x00040296|Shell Embedding
[2]|0x000401C6|Shell DocObject View
[3]|0x000601C0|Internet Explorer_Server

还是没法判断啊,还望 Afan 指教 啊

是不是再枚举 子窗口啊 ?
发表于 2012-1-12 13:53:43 | 显示全部楼层
可捕获的控件 ATL:30A4D1D81 其位置或大小会不同,可以 ControlGetPos() 一下
 楼主| 发表于 2012-1-12 16:49:53 | 显示全部楼层
诶,又出问题了 ,ControlGetPos()  如果是中文父窗口,我怎么都取不出,都是0啊
发表于 2012-1-12 16:57:40 | 显示全部楼层
#include <WinAPIEx.au3>

Local $aAW = WinList('[CLASS:TXGuiFoundation]')
Local $aCW, $aCP, $i, $CFlag = 0, $sInfo = ''
For $i = 1 To $aAW[0][0]
        $aCW = _WinAPI_EnumChildWindows($aAW[$i][1], 0)
        If @error Then ContinueLoop
        If $aCW[0][0] = 4 Or $aCW[0][0] = 9 Then
                $sInfo &= '句柄:' & $aAW[$i][1] & '        群组窗口 :        "' & $aAW[$i][0] & '"' & @CRLF
                $CFlag += 1
        ElseIf $aCW[0][0] = 1 Or $aCW[0][0] = 6 Then
                $aCP = ControlGetPos($aAW[$i][1], '', 'ATL:30A4D1D81')
                If @error Then ContinueLoop
                If $aCP[3] = 0 Or $aCP[3] = 16 Then
                        $sInfo &= '句柄:' & $aAW[$i][1] & '        聊天窗口 :        "' & $aAW[$i][0] & '"' & @CRLF
                        $CFlag += 1
                ElseIf $aCP[3] = 15 Then
                        $sInfo &= '句柄:' & $aAW[$i][1] & '        讨论组窗口:        "' & $aAW[$i][0] & '"' & @CRLF
                        $CFlag += 1
                EndIf
        EndIf
Next
If Not $CFlag Then
        MsgBox(48, '问题', '没 TM 窗口')
Else
        MsgBox(64, '检索到 ' & $CFlag & ' 个TM窗口', $sInfo)
EndIf
 楼主| 发表于 2012-1-12 17:05:06 | 显示全部楼层
偶的神啊 ,反应怎么这么快啊 ,老大竟然放出源码. 正式结贴,最后一个问题,怎么把本贴发到已解决啊 ,我看了半天没找到移动的方式啊
发表于 2012-1-12 17:07:28 | 显示全部楼层
回复 26# boy_zhuj


    编辑标题,添加“已解决”字符即可。
发表于 2013-3-24 21:38:21 | 显示全部楼层
M2009的个人聊天窗口,群窗口和讨论组
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-10 19:43 , Processed in 0.070409 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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