Web 版本检查以及为应用程序添加声音效果
2007-03-17 22:00:40 来源:WEB开发网本文示例源代码或素材下载
在 2003 四月的专栏文章中,你描述了如何实现一个叫 CWebVersion 的类,用它可以存取网络上的某个文件来检查软件的版本,当版本过期后提示用户更新程序。你的实现使用 FTP 来下载文件,但我的站点的 ISP 不允许使用匿名 FTP 连接,只能通过用户和口令登陆。我能不能用 HTTP 来代替 FTP,将版本文件作为 Web 页面下载。
如果没读过 2003 四月的专栏文章,我在这里简单介绍一下 CWebVersion 类,它是我编写的一个用来比较程序版本号的类,版本号文件存储在 Web 上。我在 TraceWin 程序中就是使用这个类来通知用户何时有新版本下载的。
没错,你可以用 HTTP;但不必转换文件。在我原来的实现中确实应该使用 HTTP,因为 HTTP 比 FTP 使用的更加广泛。许多 Web 服务提供商出于安全的原因都不允许匿名的 FTP 访问,但对于文件传输来说,FTP 效率更高(这也是我用 FTP 的原因),HTTP 对于获取简单的文本文件不错。
CWebVersion 读取文本文件,文件中的版本数据用逗号分割成四部分:高/低位的主/次版本号。使用方法是这样的:
if (CWebVersion::Online()) {
CWebVersion webver("www.mysite.com");
if (webver.ReadVersion("myversion.txt")) {
// dwVersionMS and dwVersionLS now
// hold the version numbers
}
}
静态成员函数 CWebVersion::Online 调用 ::InternetQueryOption, 用 INTERNET_OPTION_CONNECTED_STATE 作为参数,以便检查此电脑是否连接到 Internet。如果已经连接,那么 CWebVersion::ReadVersion 便从你的 Web 网站读取版本文件。接着你可以将读取到的版本号与应用程序中编译的版本号进行比较,这个版本号通常在 VERSIONINFO 或 DllGetVersion 资源中(详情参见:“如何获取某个动态链接库的版本信息”)。原来的 CWebVersion 使用 FTP 来获取文件;本文我改为使用 HTTP 来处理。使用 MFC 的 Wininet 类,在 Web 上通过 HTTP 读取文件很容易:
更多精彩
赞助商链接