找回密码
 加入
搜索
查看: 6953|回复: 18

[AU3基础] QQ2012有没有办法处理判断QQ是否在线,就是成功登录

 火.. [复制链接]
发表于 2012-3-21 01:34:45 | 显示全部楼层 |阅读模式
QQ2012有没有办法处理判断QQ是否在线,就是成功登录。
 楼主| 发表于 2012-3-21 01:57:07 | 显示全部楼层
#include <Array.au3>
#include <GUIToolbar.au3>
$qq = QQInfo()
_ArrayDisplay($qq)

Func QQInfo()
        Local $info[1][2], $sR, $i, $i_C, $txt
        Local $hTb = ControlGetHandle('[class:Shell_TrayWnd]', '', 'ToolbarWindow321')
        For $i = 0 To _GUICtrlToolbar_ButtonCount($hTb) - 1
                $i_C = _GUICtrlToolbar_IndexToCommand($hTb, $i)
                $txt = _GUICtrlToolbar_GetButtonText($hTb, $i_C)
                $sR = StringRegExp($txt, '^QQ\:\h?(.+)\((\d{5,}|.+@.+)\)', 3)
                If Not @error Then
                        $info[0][0] += 1
                        ReDim $info[$info[0][0] + 1][2]
                        $info[$info[0][0]][0] = $sR[1]
                        $info[$info[0][0]][1] = $sR[0]
                EndIf
        Next
        Return $info
EndFunc   ;==>QQInfo


找了一下 AFAN的 代码可以用,但是我要用来调用进别的程序,能否不用_ArrayDisplay 来显示
 楼主| 发表于 2012-3-21 01:57:57 | 显示全部楼层
能否不用_ArrayDisplay 来显示
因为读取到的QQ号,要调用到别的地方
 楼主| 发表于 2012-3-21 01:59:37 | 显示全部楼层
哎,如果登录的是QQ图标,就是企鹅的时候能用,一有别的消息来的时候,就不行了,放弃
发表于 2012-3-21 02:01:42 | 显示全部楼层
做自动安装啊,应该可以
发表于 2012-3-21 10:19:33 | 显示全部楼层
改了一点.
#include <GUIToolbar.au3>
$qq = QQInfo(); 昵称
MsgBox(0, '', $qq)

$qq = QQInfo(1); 帐号
MsgBox(0, '', $qq)

Func QQInfo($frag = 0)
        Local $info, $sR, $i, $i_C, $txt
        Local $hTb = ControlGetHandle('[class:Shell_TrayWnd]', '', 'ToolbarWindow321')
        For $i = 0 To _GUICtrlToolbar_ButtonCount($hTb) - 1
                $i_C = _GUICtrlToolbar_IndexToCommand($hTb, $i)
                $txt = _GUICtrlToolbar_GetButtonText($hTb, $i_C)
                $sR = StringRegExp($txt, '^QQ\:\h?(.+)\((\d{5,}|.+@.+)\)', 3)
                If Not @error Then
                        If $frag < UBound($sR) Then
                                $info = $sR[$frag]
                        Else
                                $info = 'error'
                        EndIf
                EndIf
        Next
        Return $info
EndFunc   ;==>QQInfo
回复 3# 5735988

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2012-3-21 10:25:28 | 显示全部楼层
回复 3# 5735988

也可以用2楼的代码,这样获取就可以了.
$qq = QQInfo()
MsgBox(0, '', $qq[1][1]);昵称
MsgBox(0, '', $qq[1][0]);帐号
发表于 2012-3-21 11:13:55 | 显示全部楼层
请问是判断一个QQ还是多个QQ呢?
发表于 2012-3-21 13:16:33 | 显示全部楼层
原来是读的托盘 开始以为是读的面板上的控件 激动了一把 因为现在像QQ之类的好多软件都读不到控件信息了 一些操作都是用的模拟鼠标点击或send实现,运行的时候都不能操作键鼠了。
发表于 2012-3-21 18:08:40 | 显示全部楼层
如果不是要查询自己电脑上是否登录了..可以使用这个
http://webpresence.qq.com/getonline?Type=1&QQ号:
这个可以查看是否在线
发表于 2012-3-21 21:41:34 | 显示全部楼层
#include <Array.au3>
#include <GUIToolbar.au3>
$qq = QQInfo()
_ArrayDisplay($qq)

Func QQInfo()
        Local $info[1][2], $sR, $i, $i_C, $txt
        Local $hTb = ControlGetHandle('[class:Shell_TrayWnd]', '', 'ToolbarWindow321')
        For $i = 0 To _GUICtrlToolbar_ButtonCount($hTb) - 1
                $i_C = _GUICtrlToolbar_IndexToCommand($hTb, $i)
                $txt = _GUICtrlToolbar_GetButtonText($hTb, $i_C)
                $sR = StringRegExp($txt, '^QQ\:\h?(.+)\((\d{5,}|.+@.+)\)', 3)
                If Not @error Then
                        $info[0][0] += 1
                        ReDim $info[$info[0][0] + 1][2]
                        $info[$info[0][0]][0] = $sR[1]
                        $info[$info[0][0]][1] = $sR[0]
                EndIf
        Next
        Return $info
EndFunc   ;==>QQInfo

这个源代码可以吗?
 楼主| 发表于 2012-3-22 00:31:23 | 显示全部楼层
WinSetState("QQ2012", "", @SW_SHOW)
        Send("^!s")
        Sleep(800)
        $qq = QQInfo(1); 帐号
        If $qq = $QQ_zhanghao[1] Then
        MsgBox(0,0,"登陆成功")
        ExitLoop
    EndIf
 楼主| 发表于 2012-3-22 00:31:36 | 显示全部楼层
先按出消息盒子,在判断了,
 楼主| 发表于 2012-3-25 23:41:13 | 显示全部楼层
回复 8# zldfsz


    判断一个QQ
发表于 2012-3-25 23:54:39 | 显示全部楼层
如果单是判断是否成功登录,那倒好判,如果是还要获取QQ号,正如你所说:“一有别的消息来的时候,就不行了”
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-13 10:12 , Processed in 0.083866 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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