📄 cslverchkapp.cpp
字号:
// cslVerChkApp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "WebVersion.h"
LPCTSTR GetInetErrorName(DWORD err);
int main(int argc, char* argv[])
{
if (argc != 3) {
printf(" \n本程序示范如何通过 Web 获取程序版本号。\n\n");
printf(" 使用方法: \n cslVerChkApp 文件名 服务器地址\n\n");
printf(" 文件名 = 包含版本号的 ASCII 文件名。\n\n");
printf(" 服务器地址 = FTP 服务器地址, 如:pub.chinafsdu.net\n");
return -1;
}
if (CWebVersion::Online()) {
CWebVersion webver(argv[2]);
if (webver.ReadVersion(argv[1])) {
printf("Major version = %08x\n", webver.dwVersionMS);
printf("Minor version = %08x\n", webver.dwVersionLS);
printf("Text = %s\n", webver.GetVersionText());
} else {
DWORD err = webver.GetError();
printf("%s = %d\n", GetInetErrorName(err), err);
if (err==ERROR_INTERNET_EXTENDED_ERROR) {
printf("%s\n", webver.GetExtendedErrorInfo());
}
}
} else {
printf("没有在线,无法获取版本号。\n");
}
return 0;
}
//////////////////
// Handy helper function to get name of ERROR_INTERNET_XXX code.
// (Debug only)
//
LPCTSTR GetInetErrorName(DWORD err)
{
static struct {
DWORD err;
LPCTSTR name;
} errors[] = {
{ ERROR_INTERNET_OUT_OF_HANDLES,_T("ERROR_INTERNET_OUT_OF_HANDLES") },
{ ERROR_INTERNET_TIMEOUT,_T("ERROR_INTERNET_TIMEOUT") },
{ ERROR_INTERNET_EXTENDED_ERROR,_T("ERROR_INTERNET_EXTENDED_ERROR") },
{ ERROR_INTERNET_INTERNAL_ERROR,_T("ERROR_INTERNET_INTERNAL_ERROR") },
{ ERROR_INTERNET_INVALID_URL,_T("ERROR_INTERNET_INVALID_URL") },
{ ERROR_INTERNET_UNRECOGNIZED_SCHEME,_T("ERROR_INTERNET_UNRECOGNIZED_SCHEME") },
{ ERROR_INTERNET_NAME_NOT_RESOLVED,_T("ERROR_INTERNET_NAME_NOT_RESOLVED") },
{ ERROR_INTERNET_PROTOCOL_NOT_FOUND,_T("ERROR_INTERNET_PROTOCOL_NOT_FOUND") },
{ ERROR_INTERNET_INVALID_OPTION,_T("ERROR_INTERNET_INVALID_OPTION") },
{ ERROR_INTERNET_BAD_OPTION_LENGTH,_T("ERROR_INTERNET_BAD_OPTION_LENGTH") },
{ ERROR_INTERNET_OPTION_NOT_SETTABLE,_T("ERROR_INTERNET_OPTION_NOT_SETTABLE") },
{ ERROR_INTERNET_SHUTDOWN,_T("ERROR_INTERNET_SHUTDOWN") },
{ ERROR_INTERNET_INCORRECT_USER_NAME,_T("ERROR_INTERNET_INCORRECT_USER_NAME") },
{ ERROR_INTERNET_INCORRECT_PASSWORD,_T("ERROR_INTERNET_INCORRECT_PASSWORD") },
{ ERROR_INTERNET_LOGIN_FAILURE,_T("ERROR_INTERNET_LOGIN_FAILURE") },
{ ERROR_INTERNET_INVALID_OPERATION,_T("ERROR_INTERNET_INVALID_OPERATION") },
{ ERROR_INTERNET_OPERATION_CANCELLED,_T("ERROR_INTERNET_OPERATION_CANCELLED") },
{ ERROR_INTERNET_INCORRECT_HANDLE_TYPE,_T("ERROR_INTERNET_INCORRECT_HANDLE_TYPE") },
{ ERROR_INTERNET_INCORRECT_HANDLE_STATE,_T("ERROR_INTERNET_INCORRECT_HANDLE_STATE") },
{ ERROR_INTERNET_NOT_PROXY_REQUEST,_T("ERROR_INTERNET_NOT_PROXY_REQUEST") },
{ ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND,_T("ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND") },
{ ERROR_INTERNET_BAD_REGISTRY_PARAMETER,_T("ERROR_INTERNET_BAD_REGISTRY_PARAMETER") },
{ ERROR_INTERNET_NO_DIRECT_ACCESS,_T("ERROR_INTERNET_NO_DIRECT_ACCESS") },
{ ERROR_INTERNET_NO_CONTEXT,_T("ERROR_INTERNET_NO_CONTEXT") },
{ ERROR_INTERNET_NO_CALLBACK,_T("ERROR_INTERNET_NO_CALLBACK") },
{ ERROR_INTERNET_REQUEST_PENDING,_T("ERROR_INTERNET_REQUEST_PENDING") },
{ ERROR_INTERNET_INCORRECT_FORMAT,_T("ERROR_INTERNET_INCORRECT_FORMAT") },
{ ERROR_INTERNET_ITEM_NOT_FOUND,_T("ERROR_INTERNET_ITEM_NOT_FOUND") },
{ ERROR_INTERNET_CANNOT_CONNECT,_T("ERROR_INTERNET_CANNOT_CONNECT") },
{ ERROR_INTERNET_CONNECTION_ABORTED,_T("ERROR_INTERNET_CONNECTION_ABORTED") },
{ ERROR_INTERNET_CONNECTION_RESET,_T("ERROR_INTERNET_CONNECTION_RESET") },
{ ERROR_INTERNET_FORCE_RETRY,_T("ERROR_INTERNET_FORCE_RETRY") },
{ ERROR_INTERNET_INVALID_PROXY_REQUEST,_T("ERROR_INTERNET_INVALID_PROXY_REQUEST") },
{ ERROR_INTERNET_NEED_UI,_T("ERROR_INTERNET_NEED_UI") },
{ ERROR_INTERNET_HANDLE_EXISTS,_T("ERROR_INTERNET_HANDLE_EXISTS") },
{ ERROR_INTERNET_SEC_CERT_DATE_INVALID,_T("ERROR_INTERNET_SEC_CERT_DATE_INVALID") },
{ ERROR_INTERNET_SEC_CERT_CN_INVALID,_T("ERROR_INTERNET_SEC_CERT_CN_INVALID") },
{ ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR,_T("ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR") },
{ ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR,_T("ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR") },
{ ERROR_INTERNET_MIXED_SECURITY,_T("ERROR_INTERNET_MIXED_SECURITY") },
{ ERROR_INTERNET_CHG_POST_IS_NON_SECURE,_T("ERROR_INTERNET_CHG_POST_IS_NON_SECURE") },
{ ERROR_INTERNET_POST_IS_NON_SECURE,_T("ERROR_INTERNET_POST_IS_NON_SECURE") },
{ ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED,_T("ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED") },
{ ERROR_INTERNET_INVALID_CA,_T("ERROR_INTERNET_INVALID_CA") },
{ ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP,_T("ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP") },
{ ERROR_INTERNET_ASYNC_THREAD_FAILED,_T("ERROR_INTERNET_ASYNC_THREAD_FAILED") },
{ ERROR_INTERNET_REDIRECT_SCHEME_CHANGE,_T("ERROR_INTERNET_REDIRECT_SCHEME_CHANGE") },
{ ERROR_INTERNET_DIALOG_PENDING,_T("ERROR_INTERNET_DIALOG_PENDING") },
{ ERROR_INTERNET_RETRY_DIALOG,_T("ERROR_INTERNET_RETRY_DIALOG") },
{ ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR,_T("ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR") },
{ ERROR_INTERNET_INSERT_CDROM,_T("ERROR_INTERNET_INSERT_CDROM") },
{ ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED,_T("ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED") },
{ ERROR_INTERNET_SEC_CERT_ERRORS,_T("ERROR_INTERNET_SEC_CERT_ERRORS") },
{ ERROR_INTERNET_SEC_CERT_NO_REV,_T("ERROR_INTERNET_SEC_CERT_NO_REV") },
{ ERROR_INTERNET_SEC_CERT_REV_FAILED,_T("ERROR_INTERNET_SEC_CERT_REV_FAILED") },
{ 0, NULL }
};
for (int i=0; errors[i].name; i++) {
if (err==errors[i].err) {
return errors[i].name;
}
}
return _T("Unknown error");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -