找回密码
 加入
搜索
查看: 9283|回复: 27

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

 火.. [复制链接]
发表于 2012-1-10 14:36:51 | 显示全部楼层 |阅读模式
本帖最后由 boy_zhuj 于 2012-1-12 17:08 编辑


这三个窗口的 window info 除了标题,几乎都一样,如何区分三种类型的窗口

本帖子中包含更多资源

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

×
发表于 2012-1-10 15:34:08 | 显示全部楼层
TM2009没有过
 楼主| 发表于 2012-1-10 16:20:55 | 显示全部楼层
回复 2# 80ren 给个思路也行啊!和QQ 类似吧
发表于 2012-1-10 16:28:25 | 显示全部楼层
也想知道......
 楼主| 发表于 2012-1-10 17:04:19 | 显示全部楼层
三个窗口的 icon 是不一样的,但好像没有任何函数,api,udf 能获得窗口的 icon
发表于 2012-1-10 17:52:55 | 显示全部楼层
既然 标题不同,为什么不用标题来区分呢?..
发表于 2012-1-10 18:17:47 | 显示全部楼层
既然 标题不同,为什么不用标题来区分呢?..
bdancerlc 发表于 2012-1-10 17:52



    晕,那个能区分吗?
发表于 2012-1-10 18:20:19 | 显示全部楼层
枚举其子窗口,或许都有不同的“特色”窗口。
发表于 2012-1-10 18:20:27 | 显示全部楼层
这个有意思
关注
发表于 2012-1-10 18:20:34 | 显示全部楼层
回复 7# afan


    不能区分吗?
    获取到指定标题的窗口句柄之后,还不能进行后续操作?
    难道是我误会了 楼主的意思!?..
发表于 2012-1-10 18:22:37 | 显示全部楼层
回复 10# bdancerlc


    标题肯定是随意的,没有特征字符,你如何区分谁是谁?
发表于 2012-1-10 18:25:30 | 显示全部楼层
回复 11# afan


    好吧,我刚想到一个思路,老大帮我看看可行否..
    通过判断三个 窗口的对象个数...看图..(个数各不同..)
   

本帖子中包含更多资源

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

×
发表于 2012-1-10 18:28:27 | 显示全部楼层
回复 12# bdancerlc


    你自己可以试试~ 我没有QQ和TM,没法试~
发表于 2012-1-10 18:40:32 | 显示全部楼层
本帖最后由 bdancerlc 于 2012-1-10 18:55 编辑

给个思路,具体代码,LZ自己完善吧!..


#include <IE.au3>
Dim $i,$window,$url
$window = WinWait("腾讯获奖用户通知")
While 1
        $i = $i + 1
        $oIE = _IEAttach($window, "embedded", $i)
        If @error = $_IEStatus_NoMatch Then
                If $i>1 And $i<4 Then
                        MsgBox(0, "完成", "共有"&$i&"个对象,是讨论组")
                        ExitLoop
                EndIf
        EndIf
WEnd

本帖子中包含更多资源

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

×
发表于 2012-1-10 19:39:10 | 显示全部楼层
上面的方法感觉有点不正规,网上找到一个UDF ..希望对楼主有帮助...

$Title = '腾讯获奖用户通知'
Global $Array = _WinGetCtrlInfo(WinGetTitle($Title))
Global $sOne = '[0][0] = ' & $Array[0][0] & @CR, $sTwo
For $iCC = 1 To $Array[0][0]
    $sOne &= '[' & $iCC & '][0] = ' & $Array[$iCC][0] & @CR
    $sTwo &= '[' & $iCC & '][1] = ' & $Array[$iCC][1] & @CR
Next
Switch $Array[0][0]
        Case 1
                MsgBox(0,'','讨论组')
        Case 0
                MsgBox(0,'','聊天窗口')
        Case 3
                MsgBox(0,'','QQ群窗口')
EndSwitch
Func _WinGetCtrlInfo($hWin)
    If IsString($hWin) Then $hWin = WinGetHandle($hWin)
    Local $sClassList = WinGetClassList($hWin), $iAdd = 1, $aDLL, $sHold
    Local $aSplitClass = StringSplit(StringTrimRight($sClassList, 1), @LF), $aReturn[1][2]
    For $iCount = $aSplitClass[0] To 1 Step - 1
        Local $nCount = 0
        While 1
            $nCount += 1
            If ControlGetHandle($hWin, '', $aSplitClass[$iCount] & $nCount) = '' Then ExitLoop
            If Not StringInStr(Chr(1) & $sHold, Chr(1) & $aSplitClass[$iCount] & $nCount & Chr(1)) Then
                $sHold &= $aSplitClass[$iCount] & $nCount & Chr(1)
                $iAdd += 1
                ReDim $aReturn[$iAdd][2]
                $aReturn[$iAdd - 1][0] = $aSplitClass[$iCount] & $nCount
                $aDLL = DllCall('User32.dll', 'int', 'GetDlgCtrlID', 'hwnd', _
                    ControlGetHandle($hWin, '', $aSplitClass[$iCount] & $nCount))
                If @error = 0 Then
                    $aReturn[$iAdd - 1][1] = $aDLL[0]
                Else
                    $aReturn[$iAdd - 1][1] = ''
                EndIf
            EndIf
        WEnd
    Next
    $aReturn[0][0] = $iAdd - 1
    Return $aReturn
EndFunc   ;==>_WinGetCtrlInfo()
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-11 00:10 , Processed in 0.086998 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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