电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

让自己学会写的一个在线升级的程序


发布日期:2021/6/4
 

void CUpdateDlg::OnButtonDoupdate()

{

// 读取升级文件

CFileStatus rStatus;

CString szIniData;

CString inFile;

CString tmp;

inFile=m_szPath+\\updateini;

CFile UpdateFile;

UpdateFileOpen( inFile CFile::modeRead);

UpdateFileGetStatus(inFilerStatus);

UpdateFileRead(szIniDataGetBuffer(rStatusm_size)rStatusm_size);

UpdateFileClose();

CStringArray arType;

CStringArray arVersion;

for(int i=;i<=;i+=){

AfxExtractSubString(tmpszIniDatai\n);

tmpTrimRight();

tmpTrimRight();

arTypeAdd(tmp);

}

for(int j=;j<=;j+=){

AfxExtractSubString(tmpszIniDataj\n);

tmpTrimRight();

tmpTrimRight();

arVersionAdd(tmp);

}

GetDlgItem(IDC_BUTTON_DOUPDATE)>EnableWindow(FALSE);

CProgressCtrl* pBar = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_UPDATE);

pBar>SetPos();

m_szEditMessage = \r\n取得网络升级地址\r\n+ServerUrl;

UpdateData(FALSE);

CInternetSession mySession(NULL);

CHttpFile* myHttpFile=NULL;

BOOL bIsNewer = FALSE;

CString myData;

CString myUrl;

CString m_SiteRec;

myUrl = ServerUrl+?pro=update;

myHttpFile=(CHttpFile*)mySessionOpenURL(myUrl);

while(myHttpFile>ReadString(myData)){m_SiteRec = myData;}

myHttpFile>Close();

mySessionClose();

if(m_SiteRec==ok){

pBar>SetPos();

m_szEditMessage = \r\n已经连通\r\n+m_szEditMessage;

UpdateData(FALSE);

for(int k=;k<;k++){

CInternetSession mySession(NULL);

CHttpFile* myHttpFile=NULL;

m_SiteRecEmpty();

myUrl = ServerUrl+?pro=update&module=+arType[k]+&version=+arVersion[k];

myHttpFile=(CHttpFile*)mySessionOpenURL(myUrl);

while(myHttpFile>ReadString(myData)){m_SiteRec += myData;}

if(m_SiteRec != ok){

CStringinFile;

inFile=m_szPath+\\data\\+arType[k];

CFile NetFile;

NetFileOpen( inFile CFile::modeCreate | CFile::modeWrite);

NetFileWrite( m_SiteRec m_SiteRecGetLength());

NetFileClose();

bIsNewer = TRUE;

}

pBar>SetPos((k+)*()+);

m_szEditMessage = \r\n检查+arType[k]+文件成功!\r\n+m_szEditMessage;

UpdateData(FALSE);

myHttpFile>Close();

mySessionClose();

}

if(bIsNewer){

::MessageBox(NULL文件已经更新成功!NULLMB_ICONASTERISK);

}else{

::MessageBox(NULL您的数据文件已经是最新版本了!NULLMB_ICONASTERISK);

}

}else{

::MessageBox(NULL没有连接网络或者找不到升级服务器请检查NULLMB_ICONASTERISK);

pBar>SetPos();

}

// 下面是完成了

GetDlgItem(IDCANCEL)>ShowWindow(SW_HIDE);

GetDlgItem(IDOK)>ShowWindow(SW_SHOW);

GetDlgItem(IDOK)>SetFocus();

}

上一篇:面向对象三大特性之封装

下一篇:JFreeChart封装示例