bdancerlc 发表于 2012-1-10 19:40:56

详情可以参考:
http://www.autoitx.com/forum.php?mod=viewthread&tid=3947&extra=page%3D1

UDF 很不错,通过这次也学习了不少...

Chinacat 发表于 2012-1-10 20:45:50

没用QQN久了。。。不清楚帮你。。。

boy_zhuj 发表于 2012-1-10 22:28:27

本帖最后由 boy_zhuj 于 2012-1-10 22:35 编辑

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


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


个人 认为 最保险的方式是根据窗口图标判断了,可是没有任何方法获取哦

afan 发表于 2012-1-11 02:15:14

本帖最后由 afan 于 2012-1-11 23:21 编辑

boy_zhuj 发表于 2012-1-11 10:39:39

本帖最后由 boy_zhuj 于 2012-1-11 10:58 编辑

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

除了可能误判情况 :如果都是 消息记录窗口打开的,聊天和讨论组都是会判断成群窗口的

afan 发表于 2012-1-11 23:26:41

回复 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:30:45

本帖最后由 boy_zhuj 于 2012-1-12 13:32 编辑

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

|3|
|0x00040296|Shell Embedding
|0x000401C6|Shell DocObject View
|0x000601C0|Internet Explorer_Server

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

是不是再枚举 子窗口啊 ?

afan 发表于 2012-1-12 13:53:43

可捕获的控件 ATL:30A4D1D81 其位置或大小会不同,可以 ControlGetPos() 一下

boy_zhuj 发表于 2012-1-12 16:49:53

诶,又出问题了 ,ControlGetPos()如果是中文父窗口,我怎么都取不出,都是0啊

afan 发表于 2012-1-12 16:57:40

#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

boy_zhuj 发表于 2012-1-12 17:05:06

偶的神啊 ,反应怎么这么快啊 ,老大竟然放出源码.{:face (356):} 正式结贴,最后一个问题,怎么把本贴发到已解决啊 ,我看了半天没找到移动的方式啊

afan 发表于 2012-1-12 17:07:28

回复 26# boy_zhuj


    编辑标题,添加“已解决”字符即可。

80107671 发表于 2013-3-24 21:38:21

M2009的个人聊天窗口,群窗口和讨论组
页: 1 [2]
查看完整版本: 如何 区分TM2009的个人聊天窗口,群窗口和讨论组窗口[已解决]