想实现QQ自动登录~1秒登陆一次。~~下面写法对吗
.版本 2
.支持库 eImgConverter
.支持库 dp1
.支持库 spec
.支持库 iext
.支持库 iconv
.程序集 _启动窗口_程序集
.程序集变量 user, 文本型
.程序集变量 事件组件, 客户
.子程序 __启动窗口_创建完毕
通用对话框1.初始目录 = 取运行目录 ()
载入 (窗口_验证码, _启动窗口, 假)
.子程序 还原为字节集, 字节集, , 将一串十六进制文本还原为字节集
.参数 文本, 文本型, , 如“00BFAD00AFD4FD4F9E054F9FF91FC5FF2076FBAFDB071044”,或者是“{206,210,202,199}”之类
.参数 十六进制, 逻辑型, 可空, 如果未指明则为十六进制文本,如果为假则为十进制文本
.局部变量 字节集, 字节集
.局部变量 i, 整数型
.局部变量 a, 整数型
.局部变量 临时文本, 文本型
.局部变量 临时数组, 文本型, , "0"
.如果真 (是否为空 (十六进制))
十六进制 = 真
.如果真结束
字节集 = { }
临时文本 = 文本
.如果 (十六进制)
临时文本 = 子文本替换 (临时文本, “,”, , , , 真)
临时文本 = 子文本替换 (临时文本, “{”, , , , 真)
临时文本 = 子文本替换 (临时文本, “}”, , , , 真)
.变量循环首 (1, 取文本长度 (文本), 2, i)
a = 取十进制 (取文本中间 (文本, i, 2), 0)
字节集 = 字节集 + 取字节集左边 (到字节集 (a), 1)
.变量循环尾 ()
.否则
临时文本 = 子文本替换 (临时文本, “{”, , , , 真)
临时文本 = 子文本替换 (临时文本, “}”, , , , 真)
临时数组 = 分割文本 (临时文本, “,”, )
.变量循环首 (1, 取数组成员数 (临时数组), 1, i)
a = 到数值 (临时数组 )
字节集 = 字节集 + 取字节集左边 (到字节集 (a), 1)
.变量循环尾 ()
.如果结束
返回 (字节集)
.子程序 取十进制, 整数型, , 将非十进制的标准格式文本转换成十进制整数值
.参数 欲转换的值, 文本型, , 欲转换的值,文本型!
.参数 数值类型, 整数型, 可空, 0,#十六进制;1,#十进制(默认);2,#八进制;3,#二进制
.局部变量 s, 整数型, , , 最终结果
.局部变量 a, 整数型, , , 中间变量
.局部变量 b, 整数型, , , 中间变量
.局部变量 c, 文本型, , , 中间变量
.局部变量 d, 整数型, , , 中间变量
欲转换的值 = 到小写 (欲转换的值)
.如果真 (是否为空 (数值类型))
数值类型 = 1
.如果真结束
s = 0
.判断开始 (数值类型 = 0)
a = 取文本长度 (欲转换的值)
.变量循环首 (1, a, 1, b)
c = 取文本中间 (欲转换的值, a - b + 1, 1)
.如果真 (取代码 (c, ) ≤ 取代码 (“f”, ) 且 取代码 (c, ) ≥ 取代码 (“a”, ) 或 取代码 (c, ) ≤ 取代码 (“F”, ) 且 取代码 (c, ) ≥ 取代码 (“A”, ))
.如果真 (取代码 (c, ) ≥ 取代码 (“A”, ) 且 取代码 (c, ) ≤ 取代码 (“F”, ))
d = 取代码 (c, ) - 取代码 (“A”, ) + 10
.如果真结束
.如果真 (取代码 (c, ) ≥ 取代码 (“a”, ) 且 取代码 (c, ) ≤ 取代码 (“f”, ))
d = 取代码 (c, ) - 取代码 (“a”, ) + 10
.如果真结束
.如果真结束
.如果真 (取代码 (c, ) ≤ 取代码 (“9”, ) 且 取代码 (c, ) ≥ 取代码 (“0”, ))
d = 到数值 (c)
.如果真结束
s = s + 求次方 (16, b - 1) × d
.变量循环尾 ()
.默认
.判断结束
.判断开始 (数值类型 = 1)
s = 到数值 (欲转换的值)
.默认
.判断结束
.判断开始 (数值类型 = 2)
a = 取文本长度 (欲转换的值)
.变量循环首 (1, a, 1, b)
c = 取文本中间 (欲转换的值, a - b + 1, 1)
.如果真 (取代码 (c, ) ≤ 取代码 (“7”, ) 且 取代码 (c, ) ≥ 取代码 (“0”, ))
d = 到数值 (c)
.如果真结束
s = s + 求次方 (8, b - 1) × d
.变量循环尾 ()
.默认
.判断结束
.判断开始 (数值类型 = 3)
a = 取文本长度 (欲转换的值)
.变量循环首 (1, a, 1, b)
c = 取文本中间 (欲转换的值, a - b + 1, 1)
.如果真 (取代码 (c, ) ≤ 取代码 (“1”, ) 且 取代码 (c, ) ≥ 取代码 (“0”, ))
d = 到数值 (c)
.如果真结束
s = s + 求次方 (2, b - 1) × d
.变量循环尾 ()
.默认
.判断结束
返回 (s)
.子程序 取验证码, 字节集
.参数 验证码文本字串, 文本型
.局部变量 验证码, 字节集
写到文件 (取运行目录 () + “\ameng.png”, 还原为字节集 (验证码文本字串))
转换到BMP (取运行目录 () + “\ameng.png”, 取运行目录 () + “\ameng.bmp”)
验证码 = 读入文件 (取运行目录 () + “\ameng.bmp”)
删除文件 (取运行目录 () + “\ameng.png”)
删除文件 (取运行目录 () + “\ameng.bmp”)
返回 (验证码)
.子程序 登录, , , 已创建的话 重新登录
.参数 帐号, 文本型
.参数 密码, 文本型
.局部变量 局部_客户, 客户
时钟1.时钟周期 = 100
置用户 (帐号, “查询是否已登录...”)
.如果真 (是否创建客户 (帐号) = 真)
局部_客户 = 搜索客户 (帐号)
置用户 (帐号, “正在断开连接...”)
局部_客户.断开连接 ()
置用户 (帐号, “正在复连...”)
.如果 (连接 (局部_客户))
置用户 (帐号, “正在登录...”)
.如果 (发送 (局部_客户, “VER=1.4&CON=2&CMD=Login&SEQ=” + 标记 () + “&UIN=” + 帐号 + “&PS=” + 到大写 (取数据摘要 (到字节集 (密码))) + “&M5=1&LG=0&LC=812822641C978097&GD=5MWX2PF3FOVGTP6B&CKE=”))
' 置用户 (帐号, “>>>等待信息<<<”)
' 加入成员 (客户_数组, 局部_客户)
调试输出 (“客户数:”, 取数组成员数 (客户_数组))
.否则
删除已创建客户 (帐号)
置用户 (帐号, “登录失败!”)
服务器1.发送数据 (user, “服务器挂机失败”, )
.如果结束
.否则
置用户 (帐号, “复连失败!”)
.如果结束
' 信息框 (“QQ:[” + 帐号 + “]已创建”, #警告图标, “阿蒙提示:”)
返回 ()
.如果真结束
时钟1.时钟周期 = 100
置用户 (帐号, “创建登录用户...”)
.如果 (复制窗口组件 (客户1, 局部_客户))
局部_客户.标记 = 帐号
置用户 (帐号, “正在连接服务器...”)
.如果真 (连接 (局部_客户) = 假)
局部_客户.销毁 ()
置用户 (帐号, “连接失败!”)
服务器1.发送数据 (user, “服务器挂机失败”, )
返回 ()
.如果真结束
置用户 (帐号, “正在登录...”)
.如果 (发送 (局部_客户, “VER=1.4&CON=2&CMD=Login&SEQ=” + 标记 () + “&UIN=” + 帐号 + “&PS=” + 到大写 (取数据摘要 (到字节集 (密码))) + “&M5=1&LG=0&LC=812822641C978097&GD=5MWX2PF3FOVGTP6B&CKE=”))
' 置用户 (帐号, “>>>等待信息<<<”)
加入成员 (客户_数组, 局部_客户)
调试输出 (“客户数:”, 取数组成员数 (客户_数组))
编辑框3.加入文本 (到文本 (取现行时间 ()) + “系统当前加入在线用户:” + 帐号 + “----服务器在线数” + 到文本 (取数组成员数 (客户_数组)))
服务器1.发送数据 (user, “服务器挂机成功”, )
.否则
局部_客户.断开连接 ()
局部_客户.销毁 ()
置用户 (帐号, “登录失败!”)
' 信息框 (“登录失败,请稍候重试。”, #错误图标, “阿蒙提示:”)
.如果结束
事件转移 (局部_客户, 客户1)
.否则
信息框 (“创建登录用户失败,请稍后重试。”, #错误图标, “阿蒙提示:”)
.如果结束
.子程序 搜索客户, 客户, , 在搜索调用前 请确保客户已创建!
.参数 QQ, 文本型
.局部变量 记次
.局部变量 局部_客户, 客户
.计次循环首 (取数组成员数 (客户_数组), 记次)
.如果真 (客户_数组 [记次].标记 = QQ)
局部_客户 = 客户_数组 [记次]
跳出循环 ()
.如果真结束
.计次循环尾 ()
返回 (局部_客户)
.子程序 是否创建客户, 逻辑型, , 判断指定QQ是否已经创建客户端
.参数 QQ, 文本型
.局部变量 记次
.计次循环首 (取数组成员数 (客户_数组), 记次)
.如果真 (客户_数组 [记次].标记 = QQ)
返回 (真)
跳出循环 ()
.如果真结束
.计次循环尾 ()
返回 (假)
.子程序 删除已创建客户, 逻辑型, , 删除并断开已创建的QQ客户
.参数 QQ, 文本型
.局部变量 记次
.计次循环首 (取数组成员数 (客户_数组), 记次)
.如果真 (客户_数组 [记次].标记 = QQ)
客户_数组 [记次].断开连接 ()
删除成员 (客户_数组, 记次, )
返回 (真)
跳出循环 ()
.如果真结束
.计次循环尾 ()
返回 (假)
.子程序 置用户, , , 不存在 自动创建
.参数 QQ, 文本型
.参数 状态文本, 文本型, 可空, 为空 保持不变
.参数 状态图片, 整数型, 可空, 为空则保存不变,0.离线 1.隐身 2.在线
.局部变量 表项
表项 = 超级列表框1.查找表项 (QQ, , , 1)
.如果真 (表项 = -1)
表项 = 超级列表框1.插入表项 (, 到文本 (超级列表框1.取表项数 () + 1), , 0, , ) ' 默认离线图标
超级列表框1.置标题 (表项, 1, QQ)
.如果真结束
.如果真 (是否为空 (状态文本) = 假)
超级列表框1.置标题 (表项, 2, 状态文本)
.如果真结束
.如果真 (是否为空 (状态图片) = 假)
超级列表框1.置状态图片 (表项, 状态图片)
.如果真结束
.如果真 (状态图片 = 2) ' 在线的话 就置表项数值
超级列表框1.置表项数值 (表项, 1)
.如果真结束
.子程序 连接, 逻辑型, , 连接到服务器 成功返回真
.参数 客户, 客户
返回 (客户.连接 (“211.136.236.88”, 14000))
.子程序 发送, 逻辑型
.参数 客户, 客户
.参数 内容, 文本型
返回 (客户.发送数据 (内容 + #换行符))
.子程序 标记, 文本型
.局部变量 seq, 整数型, 静态
.如果真 (seq = 0)
seq = 10 ' 初始值为10
.如果真结束
seq = seq + 1
返回 (到文本 (seq))
.子程序 _按钮_登录_被单击
时钟1.时钟周期 = 100
登录 (编辑框1.内容, 编辑框2.内容)
.子程序 _客户1_连接断开
事件组件 = 取事件组件 ()
置用户 (事件组件.标记, “断开连接”, 0)
输出调试文本 (“断开服务器:” + 事件组件.标记)
事件组件.销毁 ()
.子程序 _客户1_数据到达
.局部变量 返回文本, 文本型
.局部变量 QQ, 文本型
.局部变量 类型_, 文本型
事件组件 = 取事件组件 ()
QQ = 事件组件.标记
返回文本 = 到文本 (编码转换 (事件组件.取回数据 (), #编码_UTF_8, #编码_GBK, ))
类型_ = 取指定内容 (返回文本, “&CMD=”, “&”)
调试输出 (QQ, 返回文本, 类型_)
.如果真 (寻找文本 (返回文本, “&UIN=” + QQ + “&RES=20”, , 假) ≠ -1 且 类型_ = “Change_Stat”)
置用户 (QQ, “另一地点登录”, 0)
' 结束 ()
返回 ()
.如果真结束
' “1009908653” | “VER=1.1&CMD=Server_Msg&SEQ=13&UIN=1009908653&RES=0&MN=1&MT=513&UN=10000&MG=DESC=手机腾讯网:%250a今晨1时36分,神舟八号与天宫一号飞行器成功完成首次交会对接,我国成为第三个掌握该技术的国家。%26RESPCONDITION=MANUAL%26RESPCONTENTS=%26RESPCONTENTTYPES=WAP%26RESPDESC=详情%26RESPDEST=http://info.3g.qq.com/g/s?aid%253dtemplate%2526tid%253dnews_s8dj%2526tid%253d10345%2526g_f%253d524%2526icfa%253dsubcr_mqq%26SUBJECT=神八天宫成功完成首次对接
![]()
' ” | “Server_Msg”
.判断开始 (类型_ = “VERIFYCODE” 且 取文本长度 (返回文本) > 70) ' 验证码
加入验证码 (QQ, 取验证码 (取指定内容 (返回文本, “&VC=”, #换行符)))
置用户 (QQ, “需要验证码”)
.判断 (类型_ = “Login”) ' 登录成功或失败
' VER=1.1&CMD=Login&SEQ=12&UIN=1587427614&RES=0&RS=1&RA=Password error!’失败
.如果 (寻找文本 (返回文本, “Password error”, , 假) ≠ -1)
输出调试文本 (“登录失败,密码错误。”)
置用户 (QQ, “帐号或密码错误!”, 0)
.否则
输出调试文本 (“登录成功。”)
' 登录成功代码
置用户 (QQ, “我在线上”, 2) ' 顺便置状态图片
' 时钟_保持在线.时钟周期 = 150000 ' 2.5分钟/次
.如果结束
.判断 (类型_ = “update_stat”) ' 好友在线状态被改变
.默认
' 自己判断 类型_ 定义事件
.判断结束
.子程序 取指定内容, 文本型
.参数 全部内容, 文本型
.参数 左边文本, 文本型
.参数 右边文本, 文本型
.局部变量 临时位置, 整数型
.局部变量 总长度, 整数型
.局部变量 临时文本, 文本型
总长度 = 取文本长度 (全部内容)
临时位置 = 寻找文本 (全部内容, 左边文本, , 假) + 取文本长度 (左边文本)
临时文本 = 取文本中间 (全部内容, 临时位置, 总长度)
总长度 = 取文本长度 (临时文本)
临时位置 = 寻找文本 (临时文本, 右边文本, , 假) - 1
临时文本 = 取文本中间 (临时文本, 1, 临时位置)
返回 (临时文本)
.子程序 _时钟_保存用户在线_周期事件
.局部变量 记次
.计次循环首 (取数组成员数 (客户_数组), 记次)
输出调试文本 (“保存在线: ” + 客户_数组 [记次].标记 + “ ,客户数: ” + 到文本 (取数组成员数 (客户_数组)) + “个”)
.如果 (超级列表框1.取当前状态图片 (超级列表框1.查找表项 (客户_数组 [记次].标记, , , 1)) = 1)
发送 (客户_数组 [记次], “VER=1.4&CON=1&CMD=Change_Stat&SEQ=” + 标记 () + “&UIN=” + 客户_数组 [记次].标记 + “&SID=&XP=C4CA4238A0B92382&ST=40”)
.否则
发送 (客户_数组 [记次], “VER=1.4&CON=1&CMD=Change_Stat&SEQ=” + 标记 () + “&UIN=” + 客户_数组 [记次].标记 + “&SID=&XP=C4CA4238A0B92382&ST=10”)
.如果结束
.计次循环尾 ()
.子程序 __启动窗口_位置被改变
.如果真 (是否已创建 (窗口_验证码))
窗口_验证码.左边 = 左边 + 宽度 ÷ 2 - 窗口_验证码.宽度 ÷ 2
窗口_验证码.顶边 = 顶边 + 高度 ÷ 2 - 窗口_验证码.高度 ÷ 2
.如果真结束
.子程序 _按钮_导入_被单击
.局部变量 数据, 文本型
.局部变量 记次
.局部变量 行_数组, 文本型, , "0"
.局部变量 列_数组, 文本型, , "0"
.局部变量 分隔符, 文本型, , , 可以自定义分隔符,如:----
分隔符 = “----”
.如果真 (通用对话框1.打开 ())
数据 = 到文本 (读入文件 (通用对话框1.文件名))
行_数组 = 分割文本 (数据, #换行符, )
.计次循环首 (取数组成员数 (行_数组), 记次)
处理事件 ()
.如果真 (寻找文本 (行_数组 [记次], 分隔符, , 假) ≠ -1)
列_数组 = 分割文本 (行_数组 [记次], 分隔符, )
.如果真 (取数组成员数 (列_数组) ≥ 2)
登录 (列_数组 [1], 列_数组 [2])
输出调试文本 (行_数组 [记次])
.如果真结束
.如果真结束
.计次循环尾 ()
.如果真 (取数组成员数 (行_数组) = 0 或 寻找文本 (数据, 分隔符, , 假) = -1)
信息框 (“导入失败!” + #换行符 + “您打开的文件不是正确的格式。” + #换行符 + #换行符 + “格式: 帐号” + 分隔符 + “密码” + #换行符 + “每个帐号请按格式填写,每行代表一个帐号。”, #错误图标, “阿蒙提示:”)
.如果真结束
.如果真结束
.子程序 _超级列表框1_检查框状态被改变
.参数 表项索引, 整数型
.参数 检查框状态, 整数型
.局部变量 局部_客户, 客户
.局部变量 QQ, 文本型
QQ = 超级列表框1.取标题 (表项索引, 1)
局部_客户 = 搜索客户 (QQ)
.如果 (超级列表框1.取表项数值 (表项索引) = 1) ' 帐号已登录
.判断开始 (检查框状态 = 0)
发送 (局部_客户, “VER=1.4&CON=1&CMD=Change_Stat&SEQ=” + 标记 () + “&UIN=” + QQ + “&SID=&XP=C4CA4238A0B92382&ST=40”)
' 10.#在线 20.#离线 30.#离开或忙碌 40.#隐身
置用户 (QQ, “隐身”, 1)
.默认
发送 (局部_客户, “VER=1.4&CON=1&CMD=Change_Stat&SEQ=” + 标记 () + “&UIN=” + QQ + “&SID=&XP=C4CA4238A0B92382&ST=10”)
置用户 (QQ, “我在线上”, 2)
.判断结束
.否则
置用户 (QQ, “帐号未登录!”, 0)
.如果结束
.子程序 _服务器1_数据到达
.局部变量 临时数据, 文本型
.局部变量 分割数据, 文本型, , "0"
临时数据 = 到文本 (服务器1.取回数据 ())
分割数据 = 分割文本 (临时数据, “|”, )
.判断开始 (分割数据 [1] = “用户数据”)
编辑框1.内容 = 取文本中间 (分割数据 [2], 6, 取文本长度 (分割数据 [2]) - 5)
编辑框2.内容 = 取文本中间 (分割数据 [3], 10, 取文本长度 (分割数据 [3]) - 9)
_按钮_登录_被单击 ()
.默认
.判断结束
.子程序 _服务器1_客户进入
user = 服务器1.取回客户 ()
.子程序 _时钟1_周期事件
时钟1.时钟周期 = 100
|