下你所需,载你所想!
汇集开发技术源码资料

多线程框架写的获取搜索易语言论坛源码

:9.525KB :1 :2019-12-25 09:55:45

部分简介

CoInitializeEx (0, 0) ' 如果在线程中需要调用COM对象,则需要调用API初始化COM库,每条线程进行一次初始化就够了。
.如果真 (m_WorkState ≠ 1)
.如果 (单选框1.选中)
网页源码 = HTTP读文件 (“http://bbs.….com/thread.php?fid=124&type=26&page=” + 到文本 (Index)) ' 线程里数据要快所以就只读源码,其他计算放标签反馈事件里防止出错,这里只写所以不会出错
.否则
网页源码 = HTTP读文件 (“https://bbs.….la/forum.php?mod=forumdisplay&fid=98&typeid=285&typeid=285&filter=typeid&page=” + 到文本 (Index)) ' 易精纯源码
延时 (33)
网页源码 = 网页源码 + { 13, 10 } + { 13, 10 } + HTTP读文件 (“https://bbs.….la/forum.php?mod=forumdisplay&fid=98&typeid=14&typeid=14&filter=typeid&page=” + 到文本 (Index)) ' 源码分享
.如果结束
源码长度 = 取字节集长度 (网页源码) + 4
内存地址 = 申请内存 (源码长度, )
写到内存 (到字节集 (源码长度) + 网页源码, 内存地址, 源码长度)
.如果真结束
标签1.调用反馈事件 (内存地址, Index, 假) ' 通知窗口主线程关闭线程句柄
CoUninitialize () ' 如果线程开始运行后有初始化COM库,那么在线程退出前调用API来卸载COM库。
返回 (1)

' 正则_取数据.创建 (#常量_源码, )
正则_取数据.创建 (#常量_易精源码, )
正则_获取到 = 正则_取数据.搜索全部 (帖子源码)
.计次循环首 (取数组成员数 (正则_获取到), i)
帖子ID = 正则_获取到 [i].取子匹配文本 (帖子源码, 1, )
' /thread-14168259-1-1.html
帖子链接 = “https://bbs.125.la/” + “/thread-” + 帖子ID + “-1-1.html”
帖子名称 = 正则_获取到 [i].取子匹配文本 (帖子源码, 2, )
中间文本 = 正则_获取到 [i].取子匹配文本 (帖子源码, 3, )
' 调试输出 (中间文本)
' 暂停 ()
正则_取数据2.创建 (#常量_易作者, )
正则_获取到2 = 正则_取数据2.搜索全部 (中间文本)
.如果真 (取数组成员数 (正则_获取到2) = 1)
帖子作者 = 正则_获取到2 [1].取子匹配文本 (中间文本, 1, )
.如果真结束
正则_取数据2.创建 (#常量_发布时间, )
正则_获取到2 = 正则_取数据2.搜索全部 (中间文本)
.如果真 (取数组成员数 (正则_获取到2) = 1)
发布时间 = 正则_获取到2 [1].取子匹配文本 (中间文本, 1, )
.如果真结束
.如果真 (寻找文本 (到半角 (帖子名称), 关键词, , 假) ≠ -1)
表项索引 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (表项索引, 0, 到文本 (表项索引 + 1))
超级列表框1.置标题 (表项索引, 1, 帖子名称)
超级列表框1.置标题 (表项索引, 2, 帖子作者)
超级列表框1.置标题 (表项索引, 3, 发布时间)
超级列表框1.置标题 (表项索引, 4, 帖子链接)
.如果真结束

.计次循环尾 ()

连续赋值 (真, 按钮_开始工作.禁止, 按钮_停止工作.禁止) ' 防止误操作
超级列表框1.全部删除 ()
置等待鼠标 ()
' n = 到整数 (编辑框_工作线程.内容) ' 读取需要创建的线程数量
n = 800 ' 一百页网页源码里去查找关键字
重定义数组 (开源帖源码, 假, n) ' 清除之前的线程源码
进度条1.位置 = 0
进度条1.最大位置 = n
.如果真 (n < 1)
信息框 (“工作线程数量不能小于1”, #信息图标, “提示”, _启动窗口)
处理事件 ()
连续赋值 (假, 按钮_开始工作.禁止, 按钮_停止工作.禁止)
返回 ()
.如果真结束
m_WorkState = 0 ' 设置线程运行状态
m_StopNum = 0 ' 计数置零
CpuIndex = 0 ' CPU序号从0开始
重定义数组 (m_Threads, 假, n) ' 清除原来的线程句柄
查找关键词 = 编辑框_查找内容.内容
.计次循环首 (n, i)
处理事件 ()
hThread = CreateThread (0, 0, &执行子程序, i, 0, 0) ' 创建工作线程,并传递线程编号作为参数。
延时 (288)
.如果真 (hThread = 0)
m_WorkState = 1 ' 通知已运行的线程退出。
n = 0 ' 跳出循环后解除按钮的禁止状态。
Error = “创建第” + 到文本 (i) + “条线程失败!” ' 先设置好错误信息,最后再弹出提示。
跳出循环 ()
.如果真结束
m_Threads [i] = hThread ' 保存线程句柄
OldMask = SetThreadAffinityMask (hThread, 左移 (1, CpuIndex)) ' 用1来左移,指定CPU掩码,这里只允许在一个CPU上运行,如果要允许在多个CPU上运行,那么就把对应的二进制位设置为1。
.如果真 (OldMask = 0)
m_WorkState = 1 ' 通知已运行的线程退出。
n = 0 ' 跳出循环后解除按钮的禁止状态。
Error = “设置第” + 到文本 (i) + “条线程的CPU掩码失败!” ' 先设置好错误信息,最后再弹出提示。
跳出循环 ()
.如果真结束
' Text = “第” + 到文本 (i) + “条线程开始工作,运行在第” + 到文本 (CpuIndex + 1) + “个CPU。”
' 编辑框_提示信息.加入文本 (Text + #换行符)
CpuIndex = CpuIndex + 1
.如果真 (CpuIndex ≥ m_CpuNum) ' CPU序号是从0开始的,所以必须小于CPU数目。
CpuIndex = 0
.如果真结束

.计次循环尾 ()
恢复鼠标 ()
.如果真 (取文本长度 (Error) > 0)
信息框 (Error, #信息图标, “提示”, _启动窗口)
.如果真结束
.判断开始 (n > 0)
按钮_停止工作.禁止 = 假
.默认
连续赋值 (假, 按钮_开始工作.禁止, 按钮_停止工作.禁止)

多线程框架写的获取搜索易语言论坛源码

热门推荐

相关文章