adasir 发表于 2010-6-2 10:55:02

如何实现获取QQ昵称。

本帖最后由 adasir 于 2010-6-2 20:17 编辑

在网上看到破帽的程序有办法实现,想请教下是如何实现的。

afan 发表于 2010-6-2 12:18:02

#include <Array.au3>
#include <GUIToolbar.au3>
_ArrayDisplay(QQInfo())
Func QQInfo()
        Local $info, $sR, $i, $i_C, $txt
        Local $hTb = ControlGetHandle('', '', '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\:(.+)\((\d{5,})\)', 3)
                If Not @error Then
                        $info += 1
                        ReDim $info[$info + 1]
                        $info[$info] = $sR
                        $info[$info] = $sR
                EndIf
        Next
        Return $info
EndFunc   ;==>QQInfo

boyhong 发表于 2010-6-2 17:05:45

A版。我在3.3.6.1下运行出错了。。。。

afan 发表于 2010-6-2 20:04:50

回复 3# boyhong


    直接运行即可~ 如果在编辑器里面运行提示错误可选择继续运行,也可将上面第3行改为以下两行

$qq = QQInfo()
_ArrayDisplay($qq)

adasir 发表于 2010-6-2 20:16:56

非常好,效果不错

jycel 发表于 2010-6-14 23:38:27

回复 2# afan
我试了下只能读取一个QQ,多登一个不行!有法改进么?

lynfr8 发表于 2010-6-14 23:48:55

回复afan
我试了下只能读取一个QQ,多登一个不行!有法改进么?
jycel 发表于 2010-6-14 23:38 http://www.autoitx.com/images/common/back.gif

实测无论登录几个都可读取

jycel 发表于 2010-6-14 23:53:09

不是吧?我试怎么只能读一个?人品啊!(忘了我是2010版的,楼上用的是什么版本?)

jycel 发表于 2010-6-14 23:57:04

回复 7# lynfr8
你用的什么版本QQ
我把刚才读取出来的了QQ关了运行结果什么也没读出来后面登的那个没读取怪了

lynfr8 发表于 2010-6-14 23:59:31



2010beta3

jycel 发表于 2010-6-15 00:00:35

奇怪了,我现在登陆三个,能读二个了,始终有一个读到,不知道是不是跟昵称原因有关系
“幸福(*^_^*)”这个昵称就读不到~还有就是,有时运行能读二个,有时只能读一个

jycel 发表于 2010-6-15 00:03:51

本帖最后由 jycel 于 2010-6-15 00:06 编辑

显示QQ号的就能读出来,主显示账号用了非QQ号就读不到!
比如jycel@qq.com


……再次测试我改转去后又能读得到晕!明天研究下!

afan 发表于 2010-6-15 00:10:38

本帖最后由 afan 于 2010-6-15 00:53 编辑

回复 11# jycel


    估计是昵称字符含“()”及主显账号为邮箱地址的原因,解决方法在楼下

afan 发表于 2010-6-15 00:48:41

本帖最后由 afan 于 2010-8-31 16:06 编辑

#include <Array.au3>
#include <GUIToolbar.au3>
$qq = QQInfo()
_ArrayDisplay($qq)

Func QQInfo()
        Local $info, $sR, $i, $i_C, $txt
        Local $hTb = ControlGetHandle('', '', '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 += 1
                        ReDim $info[$info + 1]
                        $info[$info] = $sR
                        $info[$info] = $sR
                EndIf
        Next
        Return $info
EndFunc   ;==>QQInfo以上重新修改了下,解决昵称字符含“()”及主显账号为邮箱地址的问题。

以下解决 itljl 提出的 2010版无法获取的问题:
#include <Array.au3>
#include <GUIToolbar.au3>
$qq = QQInfo()
_ArrayDisplay($qq)

Func QQInfo()
      Local $info, $sR, $i, $i_C, $txt
      Local $hTb = ControlGetHandle('', '', '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 += 1
                        ReDim $info[$info + 1]
                        $info[$info] = $sR
                        $info[$info] = $sR
                EndIf
      Next
      Return $info
EndFunc   ;==>QQInfo

chenronting 发表于 2010-6-15 10:05:21

好东西。 谢谢了。
页: [1] 2 3
查看完整版本: 如何实现获取QQ昵称。