boy_zhuj 发表于 2012-1-10 14:36:51

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

本帖最后由 boy_zhuj 于 2012-1-12 17:08 编辑


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

80ren 发表于 2012-1-10 15:34:08

TM2009没有过

boy_zhuj 发表于 2012-1-10 16:20:55

回复 2# 80ren 给个思路也行啊!和QQ 类似吧

lxz 发表于 2012-1-10 16:28:25

也想知道......

boy_zhuj 发表于 2012-1-10 17:04:19

三个窗口的 icon 是不一样的,但好像没有任何函数,api,udf 能获得窗口的 icon

bdancerlc 发表于 2012-1-10 17:52:55

既然 标题不同,为什么不用标题来区分呢?..

afan 发表于 2012-1-10 18:17:47

既然 标题不同,为什么不用标题来区分呢?..
bdancerlc 发表于 2012-1-10 17:52 http://www.autoitx.com/images/common/back.gif


    晕,那个能区分吗?

afan 发表于 2012-1-10 18:20:19

枚举其子窗口,或许都有不同的“特色”窗口。

502762378 发表于 2012-1-10 18:20:27

这个有意思
关注

bdancerlc 发表于 2012-1-10 18:20:34

回复 7# afan


    不能区分吗?
    获取到指定标题的窗口句柄之后,还不能进行后续操作?
    难道是我误会了 楼主的意思!?..

afan 发表于 2012-1-10 18:22:37

回复 10# bdancerlc


    标题肯定是随意的,没有特征字符,你如何区分谁是谁?

bdancerlc 发表于 2012-1-10 18:25:30

回复 11# afan


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

afan 发表于 2012-1-10 18:28:27

回复 12# bdancerlc


    你自己可以试试~ 我没有QQ和TM,没法试~

bdancerlc 发表于 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

bdancerlc 发表于 2012-1-10 19:39:10

上面的方法感觉有点不正规,网上找到一个UDF ..希望对楼主有帮助...

$Title = '腾讯获奖用户通知'
Global $Array = _WinGetCtrlInfo(WinGetTitle($Title))
Global $sOne = ' = ' & $Array & @CR, $sTwo
For $iCC = 1 To $Array
    $sOne &= '[' & $iCC & '] = ' & $Array[$iCC] & @CR
    $sTwo &= '[' & $iCC & '] = ' & $Array[$iCC] & @CR
Next
Switch $Array
        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
    For $iCount = $aSplitClass 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]
                $aReturn[$iAdd - 1] = $aSplitClass[$iCount] & $nCount
                $aDLL = DllCall('User32.dll', 'int', 'GetDlgCtrlID', 'hwnd', _
                  ControlGetHandle($hWin, '', $aSplitClass[$iCount] & $nCount))
                If @error = 0 Then
                  $aReturn[$iAdd - 1] = $aDLL
                Else
                  $aReturn[$iAdd - 1] = ''
                EndIf
            EndIf
      WEnd
    Next
    $aReturn = $iAdd - 1
    Return $aReturn
EndFunc   ;==>_WinGetCtrlInfo()
页: [1] 2
查看完整版本: 如何 区分TM2009的个人聊天窗口,群窗口和讨论组窗口[已解决]