这个软件我也开源出来,包括DLL部分,程序集,完整的都分享给大家,方便大家学习一下代码的结构和运行原理,很多人都会开发这类的软件,但是都调用了填表模块,协议的很少会,那么这个软件就是一个非常不错的一个参考案例,仅供学习哈。
UI部分:
程序集代码:
=======================================================
.版本 2
.支持库 edroptarget
.支持库 iext
.支持库 internet
.支持库 wke
.程序集 窗口程序集_启动窗口
.程序集变量 jkthread, 整数型
.程序集变量 critical, 鱼刺类_临界许可
.程序集变量 threadPool_tex, 鱼刺类_线程池Ex
.程序集变量 threadPool_pic, 鱼刺类_线程池Ex
.程序集变量 permit, 线程许可证
.子程序 __启动窗口_创建完毕
未闻花名_皮肤加载 (12)
drag1.注册拖放控件 (uidList.取窗口句柄 ())
drag2.注册拖放控件 (edit_pic.取窗口句柄 ())
overall_programDirectory = 取运行目录 ()
permit = 线程_创建许可证 ()
线程_启动 (&Initialize)
' jkthread = 线程_启动 (&monitorThread)
.子程序 monitorThread, , , 废弃
.局部变量 a, 逻辑型
.局部变量 线程句柄, 整数型
.局部变量 j, 整数型
.局部变量 i, 整数型
.局部变量 状态, 文本型
.局部变量 点数, 整数型
.局部变量 总数, 整数型
a = 真
清除数组 (overall_collectedMid)
.循环判断首 ()
.如果真 (selection_jkreply.选中 = 真)
.如果真 (overall_weiboAccount.isLogin = 真)
.如果真 (uidList.取表项数 () > 0)
清除数组 (overall_ThreadHandleArr)
总数 = uidList.取表项数 ()
.计次循环首 (总数, i)
线程句柄 = 线程_启动 (&monitoring, i, )
加入成员 (overall_ThreadHandleArr, 线程句柄)
.如果真 (取数组成员数 (overall_ThreadHandleArr) ≥ 到整数 (5))
.判断循环首 (取数组成员数 (overall_ThreadHandleArr) ≥ 到整数 (5))
.计次循环首 (取数组成员数 (overall_ThreadHandleArr), j)
.如果真 (线程_取状态 (overall_ThreadHandleArr [j]) ≠ 1)
删除成员 (overall_ThreadHandleArr, j, )
跳出循环 ()
.如果真结束
.计次循环尾 ()
程序_延时 (10, )
.判断循环尾 ()
.如果真结束
程序_延时 (10, )
.计次循环尾 ()
.计次循环首 (取数组成员数 (overall_ThreadHandleArr), i)
线程_等待 (overall_ThreadHandleArr [i], )
.计次循环尾 ()
.如果真结束
.如果真结束
.如果真结束
.循环判断尾 (a)
.子程序 monitoring, , , 废弃
.参数 i
.局部变量 uid, 文本型
.局部变量 Json, 类_json
.局部变量 ret, 文本型
.局部变量 sendUid, 文本型
.局部变量 gmtime, 文本型
.局部变量 time, 长整数型
.局部变量 newtime, 长整数型
.局部变量 ctime, 长整数型
.局部变量 ttime, 长整数型
.局部变量 name, 文本型
.局部变量 txt, 文本型
.局部变量 msgid, 文本型
.局部变量 私信状态, 逻辑型
critical.进入 ()
uid = uidList.取标题 (i - 1, 1)
critical.退出 ()
ret = getUidMsg (overall_weiboAccount.Cookie, uid)
Json.解析 (ret)
sendUid = Json.取通用属性 (“['direct_messages'][0]['sender_id']”)
gmtime = Json.取通用属性 (“['direct_messages'][0]['created_at']”)
name = Json.取通用属性 (“['direct_messages'][0]['sender_screen_name']”)
txt = Json.取通用属性 (“['direct_messages'][0].text”)
msgid = Json.取通用属性 (“['direct_messages'][0].mid”)
newtime = 到长整数 (时间_取现行时间戳 (真))
time = 到长整数 (时间_到时间戳 (gmToTime (gmtime), 真))
ctime = 到长整数 (到整数 (edit_replyTime.内容) × 60)
ttime = newtime - time
.判断开始 (sendUid = uid)
.判断开始 (ttime < ctime) ' 时间判断
.判断开始 (midDoesItExist (msgid) = 假)
critical.进入 ()
log (uid + “:检测到回复:[” + name + “:” + txt + “]”)
uidList.置标题 (i - 1, 3, txt)
加入成员 (overall_collectedMid, msgid)
critical.退出 ()
.默认
critical.进入 ()
gather (uid)
critical.退出 ()
' 新的自动回复
.如果真 (selection_reply.选中 = 真)
.如果真 (selection_pic.选中 = 真)
私信状态 = privateChat_Img (overall_weiboAccount.Cookie, uid, edit_pic.内容)
critical.进入 ()
.判断开始 (私信状态 = 真)
uidList.置标题 (i - 1, 2, “自动[图片]√”)
log (uid + “:自动回复成功:[图片]”)
.默认
uidList.置标题 (i - 1, 2, “自动[图片]×”)
log (uid + “:自动回复失败:[图片]”)
.判断结束
critical.退出 ()
.如果真结束
.如果真 (selection_text.选中 = 真)
私信状态 = privateChat_text (overall_weiboAccount.Cookie, uid, edit_text.内容)
critical.进入 ()
.判断开始 (私信状态 = 真)
uidList.置标题 (i - 1, 2, “自动[文本]√”)
log (uid + “:自动回复成功:[文本]”)
.默认
uidList.置标题 (i - 1, 2, “自动[文本]×”)
log (uid + “:自动回复失败:[文本]”)
.判断结束
critical.退出 ()
.如果真结束
.如果真结束
.判断结束
.默认
.判断结束
.默认
.判断结束
.子程序 monitoringUid, 逻辑型
.参数 i, 整数型
.参数 uid, 文本型
.局部变量 Json, 类_json
.局部变量 ret, 文本型
.局部变量 sendUid, 文本型
.局部变量 gmtime, 文本型
.局部变量 time, 长整数型
.局部变量 newtime, 长整数型
.局部变量 ctime, 长整数型
.局部变量 ttime, 长整数型
.局部变量 name, 文本型
.局部变量 txt, 文本型
.局部变量 msgid, 文本型
.局部变量 私信状态, 逻辑型
ret = getUidMsg (overall_weiboAccount.Cookie, uid)
Json.解析 (ret)
sendUid = Json.取通用属性 (“['direct_messages'][0]['sender_id']”)
gmtime = Json.取通用属性 (“['direct_messages'][0]['created_at']”)
name = Json.取通用属性 (“['direct_messages'][0]['sender_screen_name']”)
txt = Json.取通用属性 (“['direct_messages'][0].text”)
msgid = Json.取通用属性 (“['direct_messages'][0].mid”)
newtime = 到长整数 (时间_取现行时间戳 (真))
time = 到长整数 (时间_到时间戳 (gmToTime (gmtime), 真))
ctime = 到长整数 (到整数 (edit_replyTime.内容) × 60)
ttime = newtime - time
.判断开始 (sendUid = uid)
.判断开始 (ttime < ctime) ' 时间判断
.判断开始 (midDoesItExist (msgid) = 假)
线程_进入许可区 (permit)
log (uid + “:检测到回复:[” + name + “:” + txt + “]”)
uidList.置标题 (i - 1, 3, txt)
加入成员 (overall_collectedMid, msgid)
线程_退出许可区 (permit)
.默认
线程_进入许可区 (permit)
gather (uid)
线程_退出许可区 (permit)
' 新的自动回复
.如果真 (selection_reply.选中 = 真)
.如果真 (selection_pic.选中 = 真)
私信状态 = privateChat_Img (overall_weiboAccount.Cookie, uid, edit_pic.内容)
线程_进入许可区 (permit)
.判断开始 (私信状态 = 真)
uidList.置标题 (i - 1, 2, “自动[图片]√”)
log (uid + “:自动回复成功:[图片]”)
线程_退出许可区 (permit)
返回 (真)
.默认
uidList.置标题 (i - 1, 2, “自动[图片]×”)
log (uid + “:自动回复失败:[图片]”)
.判断结束
线程_退出许可区 (permit)
.如果真结束
.如果真 (selection_text.选中 = 真)
私信状态 = privateChat_text (overall_weiboAccount.Cookie, uid, edit_text.内容)
线程_进入许可区 (permit)
.判断开始 (私信状态 = 真)
uidList.置标题 (i - 1, 2, “自动[文本]√”)
log (uid + “:自动回复成功:[文本]”)
线程_退出许可区 (permit)
返回 (真)
.默认
uidList.置标题 (i - 1, 2, “自动[文本]×”)
log (uid + “:自动回复失败:[文本]”)
.判断结束
线程_退出许可区 (permit)
.如果真结束
.如果真结束
.判断结束
.默认
.判断结束
.默认
.判断结束
返回 (假)
.子程序 gather
.参数 uid, 文本型
.局部变量 text, 文本型
text = 到文本 (读入文件 (取运行目录 () + “\已回复采集.txt”))
.如果真 (寻找文本 (text, uid, , 假) ≠ -1)
返回 ()
.如果真结束
overall_save.写文本行 (uid, “已回复采集”, 取运行目录 (), “.txt”)
.子程序 midDoesItExist, 逻辑型
.参数 mid, 文本型
.局部变量 i, 整数型
.计次循环首 (取数组成员数 (overall_collectedMid), i)
.如果真 (overall_collectedMid [i] = mid)
返回 (真)
.如果真结束
.计次循环尾 ()
返回 (假)
.子程序 gmToTime, 日期时间型
.参数 gm, 文本型
.局部变量 ar, 文本型, , "0"
.局部变量 日, 文本型
.局部变量 年, 文本型
.局部变量 月, 文本型
.局部变量 shij, 文本型
.局部变量 日期, 文本型
ar = 分割文本 (gm, “ ”, )
.如果真 (取数组成员数 (ar) ≥ 6)
日 = ar [3]
年 = ar [6]
月 = ar [2]
shij = ar [4]
.判断开始 (月 = “Jan”)
月 = “01”
.判断 (月 = “Feb”)
月 = “02”
.判断 (月 = “Mar”)
月 = “03”
.判断 (月 = “Apr”)
月 = “04”
.判断 (月 = “May”)
月 = “05”
.判断 (月 = “Jun”)
月 = “06”
.判断 (月 = “Jul”)
月 = “07”
.判断 (月 = “Aug”)
月 = “08”
.判断 (月 = “Sept”)
月 = “09”
.判断 (月 = “Oct”)
月 = “10”
.判断 (月 = “Nov”)
月 = “11”
.判断 (月 = “Dec”)
月 = “02”
.默认
.判断结束
日期 = 年 + “-” + 月 + “-” + 日 + “ ” + shij
返回 (到时间 (日期))
.如果真结束
返回 (到时间 (日期))
' 一月份全称是January,简写为Jan;二月份February,Feb;三月份March,Mar;四月份April,Apr;五月份May,May;六月份June,Jun;七月份July,Jul;八月份August,Aug;九月份September,Sept;十月October,Oct;十一月November,Nov;十二月December,Dec。
.子程序 log
.参数 内容, 文本型
edit_log.加入文本 (“ ”, 时间_到文本 (取现行时间 (), 1, 3), “ -->”, “ ”, 内容, #换行符)
.子程序 Initialize
overall_weiboAccount.Cookie = readCookie ()
overall_weiboAccount.Uid = getUid (overall_weiboAccount.Cookie)
labelUserImg1.图片 = HTTP读文件 (“https://img.zcool.cn/community/0104e9571c743432f875a399db949b.jpg@1280w_1l_2o_100sh.jpg”)
.如果真 (overall_weiboAccount.Uid ≠ “”)
overall_weiboAccount = getUserInfo (overall_weiboAccount.Cookie, overall_weiboAccount.Uid)
.如果真结束
.判断开始 (overall_weiboAccount.isLogin = 假)
labelUser1.标题 = “未登录”
.默认
loadingUserInfo ()
saveCookie (overall_weiboAccount.Cookie)
.判断结束
.子程序 loginThread
overall_weiboAccount.Uid = getUid (overall_weiboAccount.Cookie)
labelUserImg1.图片 = HTTP读文件 (“https://img.zcool.cn/community/0104e9571c743432f875a399db949b.jpg@1280w_1l_2o_100sh.jpg”)
.如果真 (overall_weiboAccount.Uid ≠ “”)
overall_weiboAccount = getUserInfo (overall_weiboAccount.Cookie, overall_weiboAccount.Uid)
.如果真结束
.判断开始 (overall_weiboAccount.isLogin = 假)
labelUser1.标题 = “登录失败”
.默认
loadingUserInfo ()
saveCookie (overall_weiboAccount.Cookie)
.判断结束
.子程序 loadingUserInfo
labelUser1.标题 = “昵称:” + overall_weiboAccount.nick + “ | ” + “地区:” + overall_weiboAccount.area + “ | ” + “关注:” + overall_weiboAccount.follow + “ | ” + “粉丝:” + overall_weiboAccount.fans
labelUser2.标题 = “性别:” + overall_weiboAccount.age + “ | ” + “简介:” + overall_weiboAccount.introduction
.子程序 _labelUserImg1_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 零时Ck, 文本型
.如果真 (输入框 (“请输入账号Cookie,点击确定重新登录”, “导入Cookie”, overall_weiboAccount.Cookie, 零时Ck, , _启动窗口) = 真)
.如果真 (零时Ck ≠ “”)
overall_weiboAccount.Cookie = 零时Ck
线程_启动 (&loginThread)
.如果真结束
.如果真结束
.子程序 _button1_被单击
web1.执行Cookie命令 (1)
web1.重新载入 ()
setCookie (web1, overall_weiboAccount.Cookie)
web1.浏览网页 (“https://api.weibo.com/chat#/chat”)
.子程序 setCookie
.参数 浏览器, 精易Web浏览器
.参数 cookies, 文本型
.局部变量 i, 整数型
.局部变量 cookie, 文本型
.局部变量 arr, 文本型, , "0"
arr = 分割文本 (cookies, “;”, )
.计次循环首 (取数组成员数 (arr), i)
cookie = arr [i]
浏览器.设置cookie_CURL (“weibo.com”, cookie)
.计次循环尾 ()
.子程序 _drag1_得到文件
.参数 接收到的文件路径, 文本型
.局部变量 wb, 文本型
.局部变量 arr, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 x, 整数型
wb = 到文本 (读入文件 (接收到的文件路径))
arr = 分割文本 (wb, #换行符, )
uidList.表项 = { }
.计次循环首 (取数组成员数 (arr), i)
x = uidList.插入表项 (, , , , , )
uidList.置标题 (x, 0, 到文本 (uidList.取表项数 ()))
uidList.置标题 (x, 1, arr [i])
.计次循环尾 ()
.子程序 _selection_reply_被单击
.如果真 (selection_reply.选中 = 真)
.判断开始 (edit_pic.内容 = “” 或 edit_text.内容 = “”)
selection_reply.选中 = 假
selection_text.禁止 = 真
selection_pic.禁止 = 真
信息框 (“请设置自动回复内容”, 0, , )
.默认
.如果真 (文件是否存在 (edit_pic.内容) = 假)
selection_reply.选中 = 假
selection_text.禁止 = 真
selection_pic.禁止 = 真
信息框 (“图片文件不存在”, 0, , )
返回 ()
.如果真结束
selection_text.禁止 = 假
selection_pic.禁止 = 假
.判断结束
.如果真结束
.如果真 (selection_reply.选中 = 假)
selection_text.禁止 = 真
selection_pic.禁止 = 真
.如果真结束
.子程序 _button_text_被单击
.如果真 (edit_text.内容 = “”)
信息框 (“请设置文本内容”, 0, , )
返回 ()
.如果真结束
button_text.禁止 = 真
button_pic.禁止 = 真
线程_启动 (&delivery_thread_text)
.子程序 delivery_thread_text
.局部变量 i, 整数型
.局部变量 最大线程数, 整数型
.局部变量 总任务, 整数型
.局部变量 n, 整数型
.局部变量 空闲数, 整数型
.局部变量 当前任务, 整数型
.局部变量 k, 整数型
.局部变量 启动时间, 整数型
.局部变量 启动时间1, 整数型
threadPool_tex.创建 (到整数 (edit_numberThreads.内容), uidList.取表项数 (), , , , , 真)
总任务 = uidList.取表项数 ()
启动时间 = 取启动时间 ()
置随机数种子 ()
.判断循环首 (n < 总任务)
空闲数 = threadPool_tex.取_空闲线程数 ()
.如果真 (空闲数 > 0)
当前任务 = 总任务 - n
.如果真 (当前任务 > 空闲数)
当前任务 = 空闲数
.如果真结束
.计次循环首 (当前任务, )
n = n + 1
k = n
threadPool_tex.投递任务 (&textprivaTemessageThread, k, )
.计次循环尾 ()
.如果真结束
threadPool_tex.等待任务动态 (, )
.判断循环尾 ()
.判断循环首 (threadPool_tex.取_是否有空闲 () = 假)
.如果真 (threadPool_tex.取_状态 () ≠ #线程池_正在工作)
返回 ()
.如果真结束
程序_延时 (10, )
处理事件 ()
.判断循环尾 ()
.如果真 (threadPool_tex.取_状态 () = #线程池_正在工作)
threadPool_tex.销毁 (0, )
button_text.禁止 = 假
button_pic.禁止 = 假
启动时间1 = 取启动时间 ()
处理事件 ()
.如果真结束
.判断循环首 (threadPool_tex.取_状态 () ≠ #线程池_未启动)
程序_延时 (10, )
.判断循环尾 ()
.子程序 delivery_thread_picture, , , 投递_线程_图片
.局部变量 i, 整数型
.局部变量 最大线程数, 整数型
.局部变量 总任务, 整数型
.局部变量 n, 整数型
.局部变量 空闲数, 整数型
.局部变量 当前任务, 整数型
.局部变量 k, 整数型
.局部变量 启动时间, 整数型
.局部变量 启动时间1, 整数型
threadPool_pic.创建 (到整数 (edit_numberThreads.内容), uidList.取表项数 (), , , , , 真)
总任务 = uidList.取表项数 ()
启动时间 = 取启动时间 ()
置随机数种子 ()
.判断循环首 (n < 总任务)
空闲数 = threadPool_pic.取_空闲线程数 ()
.如果真 (空闲数 > 0)
当前任务 = 总任务 - n
.如果真 (当前任务 > 空闲数)
当前任务 = 空闲数
.如果真结束
.计次循环首 (当前任务, )
n = n + 1
k = n
threadPool_pic.投递任务 (&ImagePrivateMessageThread, k, )
.计次循环尾 ()
.如果真结束
threadPool_pic.等待任务动态 (, )
.判断循环尾 ()
.判断循环首 (threadPool_pic.取_是否有空闲 () = 假)
.如果真 (threadPool_pic.取_状态 () ≠ #线程池_正在工作)
返回 ()
.如果真结束
程序_延时 (10, )
处理事件 ()
.判断循环尾 ()
.如果真 (threadPool_pic.取_状态 () = #线程池_正在工作)
threadPool_pic.销毁 (0, )
button_text.禁止 = 假
button_pic.禁止 = 假
启动时间1 = 取启动时间 ()
处理事件 ()
.如果真结束
.判断循环首 (threadPool_pic.取_状态 () ≠ #线程池_未启动)
程序_延时 (10, )
.判断循环尾 ()
.子程序 textprivaTemessageThread, , , 文本私信
.参数 i
.局部变量 uid, 文本型
.局部变量 状态, 逻辑型
.局部变量 监控, 逻辑型
.局部变量 msg, 文本型
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 2, “发送文本”)
uid = uidList.取标题 (i - 1, 1)
线程_退出许可区 (permit)
状态 = privateChat_text (overall_weiboAccount.Cookie, uid, edit_text.内容, msg)
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 4, msg)
线程_退出许可区 (permit)
.判断开始 (状态 = 真)
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 2, “任务[文本]√”)
log (uid + “:任务回复成功:[文本]”)
线程_退出许可区 (permit)
程序_延时 (3000)
.计次循环首 (到整数 (edit_number.内容), )
程序_延时 (到整数 (edit_delay.内容))
监控 = monitoringUid (i, uid)
.如果真 (监控 = 真)
跳出循环 ()
.如果真结束
.计次循环尾 ()
.默认
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 2, “任务[文本]×”)
log (uid + “:任务回复失败:[文本]”)
线程_退出许可区 (permit)
.判断结束
.子程序 _button_pic_被单击
.如果真 (文件是否存在 (edit_pic.内容) = 假)
信息框 (“图片文件不存在”, 0, , )
返回 ()
.如果真结束
button_pic.禁止 = 真
button_text.禁止 = 真
.子程序 ImagePrivateMessageThread
.参数 i, 整数型
.局部变量 uid, 文本型
.局部变量 状态, 逻辑型
.局部变量 监控, 逻辑型
.局部变量 msg, 文本型
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 2, “发送图片”)
uid = uidList.取标题 (i - 1, 1)
线程_退出许可区 (permit)
状态 = privateChat_Img (overall_weiboAccount.Cookie, uid, edit_pic.内容, msg)
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 4, msg)
线程_退出许可区 (permit)
.判断开始 (状态 = 真)
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 2, “任务[图片]√”)
log (uid + “:任务回复成功:[图片]”)
线程_退出许可区 (permit)
程序_延时 (3000)
.计次循环首 (到整数 (edit_number.内容), )
程序_延时 (到整数 (edit_delay.内容))
监控 = monitoringUid (i, uid)
.如果真 (监控 = 真)
跳出循环 ()
.如果真结束
.计次循环尾 ()
.默认
线程_进入许可区 (permit)
uidList.置标题 (i - 1, 2, “任务[图片]×”)
log (uid + “:任务回复失败:[图片]”)
线程_退出许可区 (permit)
.判断结束
.子程序 __启动窗口_将被销毁
线程_销毁 (jkthread)
threadPool_tex.销毁 (0)
threadPool_pic.销毁 (0)
.子程序 _drag2_得到文件
.参数 接收到的文件路径, 文本型
edit_pic.内容 = 接收到的文件路径
.子程序 _time1_周期事件
.判断开始 (取日 (取现行时间 ()) < 28 且 取日 (取现行时间 ()) > 23)
.默认
结束 ()
.判断结束
.子程序 _button_openpage_被单击
.判断开始 (宽度 = 474)
宽度 = 1360
.默认
宽度 = 474
.判断结束
=======================================================
标签:私信,发图片,uid,整数型,局部变量,overall,微博,线程,文本 From: https://www.cnblogs.com/xkrj5/p/17840818.html