导航:首页 > 源码编译 > pc软件自动更新源码

pc软件自动更新源码

发布时间:2025-02-26 13:20:54

‘壹’ 要易语言自动更新源码

要易语言自,动更新源码?(这个,你去找吴涛要要看,不知道他给你不……)

要自动更新,易语言源码?(这个……进度下载模块,写成DLL更新的时候调用你自己研究去吧)

———————————————我是分割线《念青&卓越》———————————————

.版本2

.程序集程序集1

.子程序_启动子程序,整数型,,请在本子程序中放置易模块初始化代码

_临时子程序() '在初始化代码执行完毕后调用测试代码

返回(0) '可以根据您的需要返回任意数值

.子程序_临时子程序

'本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。***注意不要修改本子程序的名称、参数及返回值类型。

.子程序下载进度事件模板,,公开

.参数下载文件名,文本型

.参数文件尺寸,整数型,,Bit

.参数下载速度,整数型,,KB/S

.参数下载进度,整数型

.子程序下载状态事件模板,,公开

.参数欲读入网址,文本型

.参数错误代码,整数型

.参数状态文本,文本型

.参数下载进度,整数型

———————————————我是分割线《念青&卓越》———————————————

.版本2

.程序集HTTP进度下载类,,公开

.程序集变量XML对象,对象

.程序集变量已初始化,逻辑型

.程序集变量集_欲读入网址,文本型

.程序集变量集_引用页,文本型

.程序集变量集_数据块超时,整数型

.程序集变量集_错误信息,文本型

.程序集变量集_保存文件名,文本型

.程序集变量状态_开始下载,逻辑型

.程序集变量集_已下载尺寸,整数型

.程序集变量集_下载进度事件指针,整数型

.程序集变量集_下载状态事件指针,整数型

.程序集变量集_文件总尺寸,整数型

.程序集变量集_停止,逻辑型

.程序集变量集_数据块尺寸,整数型

.子程序_销毁,,,当基于本类的对象被销毁前,此方法会被自动调用

清除()

.子程序清除,,公开,清空HTTP下载类

停止下载()

XML对象.清除()

连续赋值(假,已初始化,状态_开始下载,集_停止)

连续赋值(0,集_数据块超时,集_已下载尺寸,集_下载进度事件指针,集_下载状态事件指针,集_文件总尺寸,集_数据块尺寸)

连续赋值(“”,集_保存文件名,集_错误信息,集_引用页,集_欲读入网址)

.子程序初始化,逻辑型,公开,当基于本类的对象被创建后,此方法会被自动调用

.参数下载进度事件指针,子程序指针,可空

.参数下载状态事件指针,子程序指针,可空

.判断开始(已初始化=假且状态_开始下载=假)

XML对象.创建(“MSXML2.ServerXMLHTTP”,)

.判断开始(XML对象.是否为空())

返回(假)

.默认

已初始化=真

状态_开始下载=假

集_下载进度事件指针=到数值(下载进度事件指针)

集_下载状态事件指针=到数值(下载状态事件指针)

集_文件总尺寸=0

集_停止=假

集_数据块尺寸=#数据块尺寸

集_数据块超时=集_数据块尺寸÷#最低网速

返回(真)

.判断结束

.默认

返回(假)

.判断结束

.子程序置缓冲区尺寸,,公开,如果不用本方法设置缓冲区大小,将默认为10KB。不要过小,太小了会因读写次数增多而影响速度;过大了则等待数据的时间会过长;应根据网络状态合理设置。

.参数缓冲区尺寸,字节型,,单位为KB

.如果真(已初始化且状态_开始下载=假)

.如果真(缓冲区尺寸=0)

缓冲区尺寸=4

.如果真结束

集_数据块尺寸=缓冲区尺寸×1024

集_数据块超时=集_数据块尺寸÷#最低网速

.如果真结束

.子程序Http网址,,公开

.参数欲读入网址,文本型

.参数引用页,文本型,可空

.如果真(已初始化且状态_开始下载=假)

集_欲读入网址=欲读入网址

集_引用页=引用页

.如果真结束

.子程序置保存文件名,逻辑型,公开

.参数文件名,文本型

.如果真(已初始化且状态_开始下载=假)

集_保存文件名=文件名

返回(真)

.如果真结束

返回(假)

.子程序开始下载,逻辑型,公开

.局部变量字节集数据,字节集

.局部变量数据块开始下载时间,整数型

.局部变量文件号,整数型

.局部变量网页文件读写及尺寸信息,文本型

.局部变量temp,整数型

.局部变量当前读写位置,整数型

.局部变量下载速度,整数型

.局部变量已下载的百分比,整数型

.局部变量集_下载起点,整数型

.局部变量status,整数型

.如果真(已初始化=假)

集_错误信息=“没有初始化”

发送状态事件()

返回(假)

.如果真结束

.如果真(状态_开始下载)

集_错误信息=“正在下载中……”

发送状态事件()

返回(假)

.如果真结束

文件号=打开文件(集_保存文件名,#改写,#禁止读写)

.如果真(文件号=0)

集_错误信息=“本地文件无法打开”

发送状态事件()

返回(假)

.如果真结束

集_下载起点=取文件长度(文件号)

集_已下载尺寸=集_下载起点

移到文件尾(文件号)

状态_开始下载=真

集_错误信息=“”

集_停止=假

.循环判断首()

XML对象.方法(“open”,“GET”,集_欲读入网址,真)

XML对象.方法(“setRequestHeader”,“Referer”,集_引用页)

XML对象.方法(“setRequestHeader”,“Accept”,“*/*”)

XML对象.方法(“setRequestHeader”,“User-Agent”,“Mozilla/4.0(compatible;MSIE5.00;Windows98)”)

XML对象.方法(“setRequestHeader”,“Range”,“bytes=”+到文本(集_下载起点)+“-”+到文本(集_下载起点+集_数据块尺寸-1))

XML对象.方法(“setRequestHeader”,“Content-Type”,“application/octet-stream”)

XML对象.方法(“setRequestHeader”,“Pragma”,“no-cache”)

XML对象.方法(“setRequestHeader”,“Cache-Control”,“no-cache”)

XML对象.方法(“send”,)

数据块开始下载时间=取启动时间()

.判断循环首(XML对象.读数值属性(“readyState”,)≠4)

.如果真(取启动时间()-数据块开始下载时间>集_数据块超时)

XML对象.方法(“abort”,)

集_错误信息=“数据下载超时,建议重试。”

关闭文件(文件号)

发送状态事件()

清除下载信息()

返回(假)

.如果真结束

.如果真(集_停止)

集_错误信息=“用户中止了下载”

关闭文件(文件号)

发送状态事件()

清除下载信息()

返回(假)

.如果真结束

XML对象.逻辑方法(“waitForResponse”,1000)

.判断循环尾()

'检测状态

status=XML对象.读数值属性(“status”,)

.如果真(status>299且status≠416) 'http出错

集_错误信息=XML对象.读文本属性(“statusText”,)

跳出循环()

.如果真结束

.如果真(status≠206且status≠416) '服务器不支持断点续传

集_错误信息=“服务器不支持断点续传!”

跳出循环()

.如果真结束

写出字节集(文件号,XML对象.读属性(“responseBody”,).取字节集())

网页文件读写及尺寸信息=XML对象.文本方法(“getResponseHeader”,“Content-Range”)

.判断开始(网页文件读写及尺寸信息=“”)

集_错误信息=“文件长度未知!”

.默认

.如果真(集_文件总尺寸=0)

集_文件总尺寸=到数值(取文本右边(网页文件读写及尺寸信息,取文本长度(网页文件读写及尺寸信息)-倒找文本(网页文件读写及尺寸信息,“/”,,假)))

.如果真结束

当前读写位置=到数值(取文本右边(网页文件读写及尺寸信息,取文本长度(网页文件读写及尺寸信息)-倒找文本(网页文件读写及尺寸信息,“-”,,假)))

集_已下载尺寸=集_已下载尺寸+当前读写位置-集_下载起点

.如果真(集_已下载尺寸>集_文件总尺寸)

集_已下载尺寸=集_文件总尺寸

.如果真结束

集_下载起点=当前读写位置+1

已下载的百分比=集_已下载尺寸×100÷集_文件总尺寸

.判断结束

temp=取启动时间()-数据块开始下载时间

下载速度=集_数据块尺寸÷1.024÷temp

.如果真(集_下载进度事件指针≠0)

CallWindowProc(集_下载进度事件指针,集_保存文件名,集_文件总尺寸,下载速度,已下载的百分比)

.如果真结束

.如果真(集_文件总尺寸=集_已下载尺寸)

集_错误信息=“下载完毕”

跳出循环()

.如果真结束

.如果真(status=416)

集_错误信息=“下载完毕”

跳出循环()

.如果真结束

.循环判断尾(集_停止=假)

关闭文件(文件号)

发送状态事件()

清除下载信息()

返回(集_错误信息=“下载完毕”)

.子程序清除下载信息

连续赋值(假,状态_开始下载,集_停止)

连续赋值(0,集_已下载尺寸,集_文件总尺寸)

.子程序发送状态事件

.如果真(集_下载状态事件指针≠0)

CallWindowProc2(集_下载状态事件指针,集_欲读入网址,XML对象.读数值属性(“status”,),集_错误信息,集_已下载尺寸×100÷集_文件总尺寸)

.如果真结束

.子程序停止下载,,公开

.如果真(状态_开始下载)

集_停止=真

XML对象.方法(“abort”,)

.如果真结束

———————————————我是分割线《念青&卓越》调用系统API—————————

.版本2

.DLL命令CallWindowProc,整数型,"user32.dll","CallWindowProcA"

.参数程序指针,整数型

.参数下载文件名,文本型,传址

.参数文件尺寸,整数型

.参数下载速度,整数型

.参数下载进度,整数型

.DLL命令CallWindowProc2,整数型,"user32.dll","CallWindowProcA"

.参数程序指针,整数型

.参数欲读入网址,文本型,传址

.参数状态代码,整数型

.参数状态文本,文本型

.参数下载进度,整数型

———————————————我是分割线《念青&卓越》常量—————————————

.版本2

.常量数据块尺寸,"10240",,10K/块

.常量最低网速,"0.1",,KB/S

实例效果:

效果不是很好。也可以直接替换源文件。不使用窗口后台静默下载等等等等……楼主自由发挥吧!<念青&卓越>

‘贰’ 易语言怎么实现自动更新

我为了演示清除,就新建一个windos窗口程序。
在这个程序上画:一个按钮,这个按钮到时候用来自动更新
四个标签,用来说明版本。如图

我们现在进入到网络空间,点击“写文字”

文字内容便照图中排版,记得换行哦!

发布该文字成功后,进入到该文字的界面,复制该文字的地址

回到编程软件中,我们新建一个叫文本型的“源码”全局变量

我们在启动窗口上双击,自动生成一个叫“__启动窗口_创建完毕”的子程序,我这里是为了演示效果才创建的这个程序,你实际运用中可以不这样编写!
在该程序下面编写代码:
源码=编码_utf8到gb2312 (到文本 (HTTP读文件 (“之前复制的地址”)))
意思是,把之前在空间复制的那个地址的网站源码赋值给文本型“源码”变量。

我们回到发布的文字网页上,在网页的空白处单击鼠标右键---->查看网页源码。

在源码文件中找到“最新版本”那几个字,我们来取“最新版本”后面的2.0。
然后找到最新版本号后面那代码“</p>”。
因为精易模块取出中间文本这个命令需要得到要取出内容的前后文本,所以我们找到2.0前后的文本。

我们把最新的版本号获取到之后输出到标签4的标题中来,
找到后,在易语言中编写以下代码:
标签4.标题 = 文本_取出中间文本 (源码, “最新版本:”, “</p>”)
以上代码就会取出“最新版本:”和“</p>”之间的“2.0”啦!

调试一下,查看是否能正常获取到网站的源码并取出想要得到内容。
获取到版本号之后,接下来我们编写自动更新。

阅读全文

与pc软件自动更新源码相关的资料

热点内容
宠物美容优惠去哪个app 浏览:23
修车哪个app好 浏览:875
linux查看软中断 浏览:851
编译动态库怎么知道加什么lib 浏览:421
算法中常用的指标 浏览:185
plc编程器的使用 浏览:788
离心式压缩机喘振原因 浏览:936
正方三角形编程笔记 浏览:52
广告的艺术pdf 浏览:798
加密的安全性取决于算法的强度 浏览:482
苹果5s应用怎么加密锁 浏览:133
腾讯云如何查看自己的云服务器 浏览:627
电脑加速器服务器地址 浏览:898
android默认启动器 浏览:154
电脑上电子书如何传到安卓手机上 浏览:765
美国科技招聘程序员 浏览:823
网页转pdf工具 浏览:648
rust怎么加载不了服务器 浏览:541
科普编程人的东西 浏览:473
为什么无法验证服务器 浏览:369