📄 myfun.cpp
字号:
// MyFun.cpp: implementation of the CMyFun class.
#include "stdafx.h"
#include "..\MyUpdate.h"
#include "MyFun.h"
#include "Wininet.h"
#include "Mmsystem.h"
#include "Windows.h"
#include "afxsock.h"
#include <afxinet.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyFun::CMyFun()
{
}
CMyFun::~CMyFun()
{
}
int CMyFun::InternetGetFile(CString szUrl, CString szFileName)
{
DWORD dwFlags;
InternetGetConnectedState(&dwFlags, 0);
CHAR strAgent[64];
memset(strAgent,0,sizeof(strAgent));
sprintf(strAgent, "Agent%ld", timeGetTime());
HINTERNET hOpen;
if(!(dwFlags & INTERNET_CONNECTION_PROXY))
hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, NULL, NULL, 0);
else
hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(!hOpen)
{
return -1;
}
DWORD dwSize;
CHAR szHead[] = "Accept: */*\r\n\r\n";
VOID* szTemp[16384];
HINTERNET hConnect;
CFile file;
if ( !(hConnect = InternetOpenUrlA ( hOpen, szUrl, szHead,
lstrlenA (szHead), INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0)))
{
InternetCloseHandle(hOpen);
return -1;
}
if (file.Open(szFileName,CFile::modeWrite|CFile::modeCreate)==FALSE )
{
return -1;
}
DWORD dwByteToRead = 0;
DWORD dwSizeOfRq = 4;
DWORD dwBytes = 0;
if (!HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,
(LPVOID)&dwByteToRead, &dwSizeOfRq, NULL))
{
dwByteToRead = 0;
}
memset(szTemp,0,sizeof(szTemp));
do
{
if (!InternetReadFile (hConnect, szTemp, 16384, &dwSize))
{
file.Close();
return -1;
}
if (dwSize==0)
break;
else
file.Write(szTemp,dwSize);
}while (TRUE);
file.Close();
InternetCloseHandle(hConnect);
InternetCloseHandle(hOpen);
return 0;
}
CString CMyFun::InternetGetInfo(CString szUrl)
{
DWORD dwFlags;
InternetGetConnectedState(&dwFlags, 0);
CString reValue,strContent;
reValue=_T("Error");
CHAR strAgent[64];
memset(strAgent,0,sizeof(strAgent));
sprintf(strAgent, "Agent%ld", timeGetTime());
HINTERNET hOpen;
if(!(dwFlags & INTERNET_CONNECTION_PROXY))
hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, NULL, NULL, 0);
else
hOpen = InternetOpenA(strAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(!hOpen)
{
return reValue;
}
DWORD dwSize;
CHAR szHead[] = "Accept: */*\r\n\r\n";
VOID* szTemp[16384];
HINTERNET hConnect;
if ( !(hConnect = InternetOpenUrlA ( hOpen, szUrl, szHead,
lstrlenA (szHead), INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0)))
{
InternetCloseHandle(hOpen);
return reValue;
}
DWORD dwByteToRead = 0;
DWORD dwSizeOfRq = 4;
DWORD dwBytes = 0;
CString strInfoTemp;
if (!HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,
(LPVOID)&dwByteToRead, &dwSizeOfRq, NULL))
{
dwByteToRead = 0;
}
memset(szTemp,0,sizeof(szTemp));
do
{
if (!InternetReadFile (hConnect, szTemp, 16384, &dwSize))
{
return reValue;
}
if (dwSize==0)
{
break;
}
else
{
strInfoTemp.Format("%s",szTemp);
strContent+=strInfoTemp;
}
}while (TRUE);
InternetCloseHandle(hConnect);
InternetCloseHandle(hOpen);
return strContent;
}
BOOL CMyFun::TestVersion(CString strOldVersion, CString strNewVersion)
{
int iOldPos1,iOldPos2,iOld,iNew,iPos1,iPos2;
CString strOldVer,strNewVer;
BOOL bHaveNewVersion = FALSE;
//只比较前两位
iOldPos1 = strOldVersion.Find(".");
iOldPos2 = strOldVersion.Find(".",iOldPos1+1);
iPos1 = strNewVersion.Find(".");
iPos2 = strNewVersion.Find(".",iPos1+1);
strOldVer = strOldVersion.Mid(0,iOldPos1);
strNewVer = strNewVersion.Mid(0,iPos1);
iOld = atoi(strOldVer);
iNew = atoi(strNewVer);
if(iNew > iOld)
{
bHaveNewVersion = TRUE;
}else if(iNew == iOld)
{ //比较后两位
iOldPos2 = strOldVersion.Find(".",iOldPos1+1);
iPos2 = strNewVersion.Find(".",iPos1+1);
strOldVer = strOldVersion.Mid(iOldPos1+1,iOldPos2-iPos1-1);
strNewVer = strNewVersion.Mid(iPos1+1,iPos2-iPos1-1);
iOld = atoi(strOldVer);
iNew = atoi(strNewVer);
if(iNew > iOld)
{
bHaveNewVersion = TRUE;
}
}
return bHaveNewVersion;
}
CString CMyFun::GetFileFullPath()
{
TCHAR szPath[MAX_PATH];
CString strError;
strError=_T("Error");
if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
{
return strError;
}
return (CString)szPath;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -