如何 区分TM2009的个人聊天窗口,群窗口和讨论组窗口[已解决]
本帖最后由 boy_zhuj 于 2012-1-12 17:08 编辑这三个窗口的 window info 除了标题,几乎都一样,如何区分三种类型的窗口 TM2009没有过 回复 2# 80ren 给个思路也行啊!和QQ 类似吧 也想知道...... 三个窗口的 icon 是不一样的,但好像没有任何函数,api,udf 能获得窗口的 icon 既然 标题不同,为什么不用标题来区分呢?.. 既然 标题不同,为什么不用标题来区分呢?..
bdancerlc 发表于 2012-1-10 17:52 http://www.autoitx.com/images/common/back.gif
晕,那个能区分吗? 枚举其子窗口,或许都有不同的“特色”窗口。 这个有意思
关注 回复 7# afan
不能区分吗?
获取到指定标题的窗口句柄之后,还不能进行后续操作?
难道是我误会了 楼主的意思!?.. 回复 10# bdancerlc
标题肯定是随意的,没有特征字符,你如何区分谁是谁? 回复 11# afan
好吧,我刚想到一个思路,老大帮我看看可行否..
通过判断三个 窗口的对象个数...看图..(个数各不同..)
回复 12# bdancerlc
你自己可以试试~ 我没有QQ和TM,没法试~ 本帖最后由 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
上面的方法感觉有点不正规,网上找到一个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