Loading... 这节课是我们表情包批量下载器实战案例的最终章——实战项目总结课。我们需要进行一些总结才能进行进一步的升华。因此我们这节课来回顾一下之前的每一节课的内容要点。 --- **实战总结** 温故而知新。 --- --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/206.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://static.fox-9.com/uploads/2021/08/09/chaoji14-1.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 14 表情包批量下载之正则匹配</p> <div class="inster-summary text-muted"> 这节课我们来一起开始学习如何动态修改表项的状态吧!新案例介绍为了讲解如何进行表项状态动态修改,这节课我们将一起来学... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 教会了大家到一个网站进行信息采集的时候对于网页源码的分析,我们所需要采集的网址是:[http://qq.yh31.com/zjbq/0551964.html](http://qq.yh31.com/zjbq/0551964.html) 2. 教会了大家如何进行正则匹配出我们需要的表情包真实图片地址,得到我们的正则表达式。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/207.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 15 表情包批量下载之界面设计</p> <div class="inster-summary text-muted"> 这节课我们正式开始我们表情包批量下载器软件的撰写。要撰写这款软件,首先不能少的当然就是我们的界面了,因此我们这节课... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 教会了大家如何对于我们的表情包批量下载器的界面进行初始化设计。 设计要点: 1. 保存文件夹路径选择 2. 要做的网页网址 3. 页面起始值和终止值 4. 超级列表框报表列:序号,所属页面页码,下载地址,下载状态。 5. 按钮:解析,下载,全选,清空选中,停止等。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/208.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 16 表情包批量下载之地址解析</p> <div class="inster-summary text-muted"> 大家好!上节课我们进行了表情包批量下载器的界面设计,这节课我们开始来撰写我们的解析功能。解析功能属于核心功能,因为... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 教会了大家如何对于我们的表情包批量下载器的下载地址从正则获取到之后进行解析。本部分涉及的知识点是正则表达式与超级列表框在易语言中的结合。 本部分大致要点: 1. 因为解析是访问很多的页面的,所以有可能花费的时间较长,因此,为了防止按下按钮之后卡界面,我们推荐使用开一个额外的线程来解析的形式来进行解析。用到我们的多线程技术。 2. 正则匹配两次,如何顺利的取出我们要的内容?如何在线程中保证不崩溃?需要进行 初始化COM库 和 取消COM库。 3. 超级列表框的写入技巧。 4. 封装的技巧。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/209.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 17 表情包批量下载之地址解析 2</p> <div class="inster-summary text-muted"> 这节课呢我们来完成上节课讲解解析未完成的部分。因为 PPT 内容完全相同,这里我们来讲一点不一样的。上节课的解析代... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 本节课在继续完成上节课下载地址解析代码的同时,把边边角角的按钮响应等功能给完善了。 比如: 1. 给停止功能增加了代码,点击之后可以停止解析线程。 2. 给全选和清空选中按钮增加了代码。 3. 给保存路径文件夹的选择功能增加了代码。 4. 增加了保存配置和打开程序自动读取配置的功能代码等等。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/210.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 18 表情包批量下载之下载与设置状态</p> <div class="inster-summary text-muted"> 这节课呢我们来一起完成表情包批量下载器的下载功能以及如何动态设置表项。下载与设置状态在 post 技术之中,下载图... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 本节课教会了大家如何进行 post 下载网页图片,原理分析以及代码的撰写,完成了下载图片的功能封装(暂时采用一个线程一张张图片来进行下载的方式来进行下载),同时也学习了如何动态设置表项的状态。 关于更多的 post 知识请关注[雪山凌狐教程](http://fox-9.com/)后续推出的 post 系列课程,我们系统地从零基础讲起。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/211.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 19 表情包批量下载之多线程许可证原则</p> <div class="inster-summary text-muted"> 这节课我们来讲一讲超级列表框与多线程结合之后的神奇应用。有了多线程的加入,你会发现你是多么的节省时间,世界是多么的... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 本节课开始我们进入全新的篇章,开始涉及讲解到超级列表框结合多线程之后的应用。同时打算让大家掌握多线程的基础使用,今后再用多线程熟练且不用愁。 2. 首先本节课介绍了多线程的概念和好处,为什么我们要使用多线程。 3. 然后一起学习了多线程四大金刚:线程启动,线程销毁,创建进入许可证,删除进入许可证。或者可以扩展为六大金刚:再加上进入许可区,退出许可区。 4. 接着学习了多线程许可证使用的原则以及结合超级列表框怎么用许可证,这里的概念给大家几条可以背诵记忆的原则,背诵之后今后遇到具体的情况只要稍微动脑一想就知道什么时候该用许可证了。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/212.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 20 表情包批量下载之解析单线程变多线程</p> <div class="inster-summary text-muted"> 这节课我们正式开始改写我们解析部分的代码,使之从单线程神奇的变为多线程,提高运行效率和运行速度。改写单线程变多线程... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 本节课开始我们正式开始编写我们的多线程代码,首先我们需要将解析部分由原来的单线程变为多线程。 技术要点: 1. 在写单线程的时候,如果有意识的把中间过程用子程序封装起来,改成多线程非常的方便。 2. 解析的改写要点是,本来是一个线程从第一页开始往后一页页解析的,改写成,每一个子线程来解析一页内容并写到超级列表框中,以页码数为区分线程的参数即可。 3. 线程数不断增加,如何控制线程数不会无限增加(无限增加会导致程序占用系统资源过分大,电脑顶不住)? 4. 许可证,许可区在多线程中如何进行利用?应该在哪一步的时候进入临界区,哪一步可以不用进入? --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/213.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 21 表情包批量下载之下载单线程变多线程</p> <div class="inster-summary text-muted"> 这节课我们继续上节课的节奏,把下载功能也从单线程改成多线程吧!改写单线程变多线程再来让下载速度加快。技术要点:在写... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 本节课我们将下载功能从单线程变为多线程,改写方法与改写解析为多线程是比较类似的。 技术要点: 1. 在写单线程的时候,如果有意识的把中间过程用子程序封装起来,改成多线程非常的方便。 2. 下载的改写要点是,本来是一个线程从第一个表项开始往后一项项下载的,改写成,每一个子线程来下载一项内容并将状态写到超级列表框中,以表项索引为区分线程的参数即可。精易模块中,线程_启动命令较为稳定,线程_启动多参_文本型容易崩溃,尽可能使用前者。 3. 线程数不断增加,如何控制线程数不会无限增加(无限增加会导致程序占用系统资源过分大,电脑顶不住)? 4. 许可证,许可区在多线程中如何进行利用?应该在哪一步的时候进入临界区,哪一步可以不用进入? --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/214.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 22 表情包批量下载之多线程秒停止</p> <div class="inster-summary text-muted"> 本节课我们来修复一下因为改成了多线程的解析和下载而出现一些 bug 的停止功能。很明显通过前几节课的修改,我们的解... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 在之前的课程中,我们已经把解析与下载的功能从单线程改写成多线程了。但是通过测试我们发现,之前的停止功能已经不能满足我们多线程的停止需求了,我们需要对此功能进行更新。 如何在多线程的情况下实现多个线程秒速停止呢? 原因分析: 因为我们原来的代码所停止的线程句柄是能启动子线程的父线程的,所以我们只能让父线程停止再开新的子线程,子线程依然在跑自己的。所以会造成不会秒停止的状况。 技术要点: 1. 针对这种情况,方法有许多,比如每开一个子线程就把子线程的句柄存入数组中,停止时批量停止所有的数组中的句柄等。我们这里采用程序集变量控制的方法,也比较简单方便。 2. 定义一个逻辑型程序集变量,集_是否停止,开始解析或者下载时设为假,按下停止改为真,则还在跑的子线程读取该变量就知道,哦,是时候该停止了,就实现了秒停止的功能。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/216.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://static.fox-9.com/uploads/2021/08/09/chaoji23-1.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 23 表情包批量下载之右键菜单的使用</p> <div class="inster-summary text-muted"> 这节课呢我们将一起来学习右键菜单与超级列表框的结合。菜单编辑器的介绍这是又一个进阶新知识的学习。菜单编辑器是用来编... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 这节课开始,我们来一起学习如何将菜单与超级列表框相结合。于是我们选择使用右键弹出菜单的方式来完成。 2. 首先我们学习了菜单编辑器的使用,然后开始给我们的软件右键菜单增加几个小功能: * 复制当前图片地址 * 复制选中图片地址 * 复制全部图片地址 * 在浏览器打开该图片,用精易模块的 网页_打开指定网址 命令 其中因为超级列表框的现行选中项只能返回一个表项的索引,而且并不是鼠标所在位置的表项,所以,复制当前图片和打开图片只允许当前只选中一个表项的情况。我们需要在弹出菜单前对于什么功能可用什么功能不可用做一个限制。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/217.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 24 表情包批量下载之封装复制功能</p> <div class="inster-summary text-muted"> 经过上节课的学习,相信大家已经掌握了菜单编辑器的各种基本使用。我们在编写上节课代码的时候也注意到,我们的三个复制功... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 这节课开始,我们来一起对之前写的三个复制功能进行封装。 封装的几个要点: 1. 复制当前表项,选中表项,全部表项的功能都可以封装。 2. 请注意处理,如果需要复制多列的情况。原有代码没有处理,因为只需要复制图片路径即可,现实使用中可能会需要复制多行,提供该接口,同时注意列与列之间的分隔符。 --- <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="http://fox-9.com/218.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(http://fox-9.com/usr/themes/handsome/assets/img/sj/4.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">带你玩转超级列表框 25 表情包批量下载之双击表项功能</p> <div class="inster-summary text-muted"> 这节课我们来学习双击表项来打开某个图片网址的功能的实现。双击浏览图片不仅是右键单击表项可以弹出菜单进行各种操作,我... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 1. 这节课我们来完善我们的下载器,增加一个双击表项打开图片地址的功能。该功能很简单,使用超级列表框的“被双击”事件即可完成。 --- --- **源码分享** **源码分享:** 为什么在前面的课程中我们不分享源码呢? 原因有以下几个:一个主要是因为,希望大家每一课根据视频所学,自己动动手,按照视频讲解的一步步自己敲一遍代码,这样不仅记忆深刻,而且学习效果更好,记忆更加牢固。另一方面,我们的源码在课程讲解的过程中也在不断更新换代,修改之前的代码,所以直到整个案例结束的时候才分享整个源码给大家,比较完整,也不会再有大的改动。 本课仅分享软件源码,模块源码还需要再更新,暂时不分享,请大家自己去把扩展模块完善。 **下载地址(旧的之前写好的模块一并打包在里面):** <div class="hideContent">该部分仅登录用户可见</div> 以下是我们的视频教程: **在线观看:** http://v.youku.com/v_show/id_XMjgxMzAzNTU2MA==.html **高清源文件下载:** <div class="hideContent">该部分仅登录用户可见</div> 感谢大家的收看,我们下期再见! 最后修改:2021 年 08 月 09 日 © 允许规范转载 赞 赠人玫瑰,手留余香