找回密码
 立即注册
查看: 256|回复: 1

[易语言] 取所有已登录QQ号码,新旧版本通用,支持TIM(20231229优化)

[复制链接]
发表于 2023-12-29 19:27:57 | 显示全部楼层 |阅读模式
.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口
.程序集变量 对象名, 文本型

.子程序 __启动窗口_创建完毕



.子程序 _按钮1_被单击

调试输出 (取所有已登录QQ_通用 ())

.子程序 取所有已登录QQ_通用, 文本型, , 返回所有QQ号,按先后登录的顺序排列
.局部变量 ID数组, 整数型, , "0"
.局部变量 i, 整数型
.局部变量 路径, 文本型
.局部变量 ret, 文本型
.局部变量 结果, 文本型

进程_取同名ID (“QQ.exe”, ID数组, )
.如果真 (取数组成员数 (ID数组) ≥ 1)
    .计次循环首 (取数组成员数 (ID数组), i)
        ret = “”
        路径 = 进程_取路径 (ID数组 <i>)

        .判断开始 (文本_取出现次数 (路径, “\Bin\”, ) ≥ 1)
            ret = 线程_取对象完整名 (ID数组 <i>, “A275F086-2618-4C2D-AC22-89D7D169459E”)  ' 老版QQ
        .判断 (文本_取出中间文本 (进程_取命令行 (ID数组 <i>), #引号, #引号, , ) = 路径)  ' 由于NT架构QQ的特殊性,过滤提高效率
            ret = 线程_取对象完整名 (ID数组 <i>, “149D051A-54FB-491F-A5AC-20B1E2E226AA”)  ' NT架构新版
            .判断开始 (ret = “”)
                到循环尾 ()
            .默认

            .判断结束

        .默认
            到循环尾 ()
        .判断结束
        ret = 文本_取右边 (ret, “/”, , )
        .如果真 (结果 ≠ “”)
            结果 = 结果 + “|”
        .如果真结束
        结果 = 结果 + ret
    .计次循环尾 ()
.如果真结束

.如果真 (进程_是否存在 (“TIM.exe”, ))
    进程_取同名ID (“TIM.exe”, ID数组, )
    .如果真 (取数组成员数 (ID数组) ≥ 1)
        .计次循环首 (取数组成员数 (ID数组), i)
            ret = “”
            ret = 线程_取对象完整名 (ID数组 <i>, “A275F086-2618-4C2D-AC22-89D7D169459E”)  ' TIM
            ret = 文本_取右边 (ret, “/”, , )
            .如果真 (结果 ≠ “”)
                结果 = 结果 + “|”
            .如果真结束
            结果 = 结果 + ret
        .计次循环尾 ()
    .如果真结束

.如果真结束
返回 (结果)

.子程序 线程_取对象完整名, 文本型
.参数 进程ID, 整数型
.参数 对象名称, 文本型, , 模糊的名称
.局部变量 HandleCount, 整数型
.局部变量 sHandle, 整数型
.局部变量 tHandle, 整数型
.局部变量 i, 整数型
.局部变量 进程句柄, 整数型, , "0"
.局部变量 计数, 整数型
.局部变量 hx句柄, 整数型

取进程句柄 (进程ID, 进程句柄)
.计次循环首 (取数组成员数 (进程句柄), 计数)
    .如果真 (GetProcessHandleCount (进程句柄 [计数], HandleCount))
        .判断循环首 (HandleCount > i 且 sHandle < 65536)
            sHandle = sHandle + 4
            .如果真 (DuplicateHandleA (进程句柄 [计数], sHandle, GetCurrentProcess (), tHandle, 0, 假, 2))
                i = i + 1
                对象名 = “”
                hx句柄 = 线程_启动 (&取句柄名称, tHandle, )
                .如果 (取反 (线程_等待 (hx句柄, 500)))
                    线程_销毁 (hx句柄)
                    CloseHandle (tHandle)
                .否则
                    CloseHandle (tHandle)
                    .如果真 (文本_取出现次数 (对象名, 对象名称, ) ≥ 1)
                        返回 (对象名)
                    .如果真结束

                .如果结束

            .如果真结束
            处理事件 ()
        .判断循环尾 ()
    .如果真结束

.计次循环尾 ()
返回 (“”)

.子程序 取进程句柄, 整数型
.参数 进程ID, 整数型
.参数 进程句柄, 整数型, 可空 数组
.局部变量 进程数据, 精易_进程信息列表
.局部变量 hSnapshot, 整数型
.局部变量 hProcess, 整数型
.局部变量 j, 整数型

hSnapshot = CreateToolhelp32Snapshot (2, 0)
.如果真 (hSnapshot ≠ -1)
    进程数据.dwSize = 296
    j = Process32First (hSnapshot, 进程数据)
    .判断循环首 (j ≠ 0)
        .如果真 (进程ID = 进程数据.进程ID)
            hProcess = OpenProcessA (2035711, 假, 进程数据.进程ID)
            加入成员 (进程句柄, hProcess)
        .如果真结束
        j = Process32Next (hSnapshot, 进程数据)
    .判断循环尾 ()
    CloseHandle (hSnapshot)
    返回 (hProcess)
.如果真结束
返回 (0)

.子程序 取句柄名称
.参数 tHandle, 整数型
.局部变量 unicode, 字节集
.局部变量 ansi, STRING

unicode = 取空白字节集 (8192)
.如果真 (ZwQueryObject (tHandle, 1, unicode, 8192, 0) = 0)
    RtlUnicodeStringToAnsiString (ansi, unicode, 真)
    对象名 = 指针到文本 (ansi.Buffer)
    RtlFreeAnsiString (ansi)
.如果真结束





上一篇:利用有道云更新 开源
下一篇:x64位内核层强删文件 保护文件 完整开源 附驱动源码
回复

使用道具 举报

发表于 2024-1-15 22:56:53 | 显示全部楼层
看不懂,能否用C#或者Vb,指导一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|27CaT资源论坛

GMT+8, 2024-11-23 03:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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