
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于visual c+之windows核心編程代碼分析(8)自動下載更新程序我們編寫windows程序,常常需要自動更新,該功能如何實現呢,我們來看代碼實現與注釋講解 ilude stdafx.h include autoup.h ifdef _debug define new debug_new endif / 唯一的應用程序對象 cwinapp theapp; using namespace std; define myversion 5 /定義程序版本。請注重:每次發布,值應當不相同,建議用法自然數遞增數列! dword winapi updatethreadproc(lpvoid lp
2、aram) *假如有須要,可以用法gettemppath() 函數獵取系統暫時文件名目,將用到的文件下載至該名目。本實例中挺直用法程序當前名目, *并在升級完成時將其刪除。 har_t *tempfilename= new wchar_t255; /升級文件暫時文件名,在該程序中為“autoupdate_.e” wmem(tempfilename,0,255); wsprintf(tempfilename,l %s_.exe ,afxgetapp()- m_pszappname); /wsprintf對字符串舉行格式化處理 urldownloadtofile(null,_t( http:/12
3、/update.txt )/*升級信息配置文件,請按照實際自行修改*/, _t( update.ini ),0,null); file *pfile=_wfopen(l update.ini ,l r if(!pfile) return -1; /假如打開文件失敗,則返回。 char updateinfo10;/變量存儲 “update.ini” 中的信息 memset(updateinfo,0,10); fgets(updateinfo,10,pfile); /從下載回歸的升級配置文件中讀取版本號 fclose(pfile); int updateversion=atoi(up
4、dateinfo); /atoi 函數返回(const char* _s)參數轉化為 int 的值。 if(updateversion myversion) /推斷現有版本是否大于程序自身版本 /messagebox(null,_t( 發覺新版 ),_t( 在線更新 ),mb_iconinformation); urldownloadtofile(null,_t( /autoupdate.exe )/*升級文件鏈接,請按照實際自行修改 */,tempfilename,0,null); process_information pi; startupinfo si;
5、memset( si, 0, sizeof(si); si.cb = sizeof(si); if(createprocess(tempfilename,l /install , null, null, false,normal_priority_class, null, null, si, pi) /啟動升級程序后退出 exitprocess(0); deletefile(_t( update.ini ); return 0; dword winapi workthreadproc(lpvoid lparam) messagebox(null,l 工作線程已經啟動。 ,l 信息 ,mb_ic
6、oninformation); sleep(infinite); return 0; int _tmain(int argc, tchar* argv, tchar* envp) int nretcode = 0; / 初始化 mfc 并在失敗時顯示錯誤 if (!afxwininit(:getmolehandle(null), null, :getcommandline(), 0) / todo: 更改錯誤代碼以符合您的需要 _tprintf(_t( 錯誤: mfc 初始化失敗n ); nretcode = 1; ee / todo: 在此處為應用程序的行為編寫代碼。 wchar_t sta
7、rtinfo255; /啟動參數 wmemset(startinfo,0,255); wcs(startinfo,afxgetapp()- m_lpcmdline); if(!wcsi(startinfo,_t( /install ) /afxmessagebox(l 哀求安裝 wchar_t *appname = new wchar_t255; wchar_t *tempfilename = new wchar_t255;/升級文件暫時文件名,在這里為“autoupdate_.exe” wchar_t *finalfilename = new wchar_t255; /自身文件名,在該程序中
8、為“autoupdate.exe” wmemset(appname,0,255); wmemset(tempfilename,0,255); wmemset(finalfilename,0,255); wcscat(appname,afxgetapp()- m_pszappname); if(appnamewcslen(appname)-1=_) wsprintf(tempfilename,l %s.exe ,appname); /wsprintf對字符串舉行格式化處理 wcscat(finalfilename,appname); finalfilenamewcslen(finalfilena
9、me)-1=0; wcscat(finalfilename,_t( .exe ); /messagebox(null,tempfilename,l 安裝暫時文件名(程序自身文件名) ,mb_iconinformation); /messagebox(null,finalfilename,l 目標文件名(最新生成的程序) ,mb_iconinformation); copyfile(tempfilename,finalfilename,false); process_information pi; startupinfo si; memset( si, 0, sizeof(si); si.cb
10、= sizeof(si); if(createprocess(finalfilename,l /finish , null, null, false,normal_priority_class, null, null, si, pi) exitprocess(0); else /messagebox(null,l 無效安裝文件 ,l 無效調用 ,mb_iconerror); else if(!wcsicmp(startinfo,_t( /finish ) wchar_t *tempfilename = new wchar_t255; wmemset(tempfilename,0,255); w
11、sprintf(tempfilename,l %s_.exe ,afxgetapp()- m_pszappname); /wsprintf對字符串舉行格式化處理 /messagebox(null,tempfilename,l 完成更新.刪除暫時升級文件 ,mb_iconinformation); deletefile(tempfilename); /*測試:彈出對話框 顯示程序版本*/ wchar_t tmpmyver10; wmemset(tmpmyver,0,10); _itow(myversion,tmpmyver,10/*表示以10進制轉換*/); messagebox(null,tmpmyver,_t( 程序當前版本: ),mb_iconinformation); /*-*/ handle hupdatethread=createthread(null,0,(lpthread_start_routine)updatet
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2016-學年高中歷史 第五單元 法國民主力量與專制勢力的斗爭 第2課 拿破侖帝國的建立與封建制度的復辟教學設計 新人教版選修2
- 2024-2025學年高中政治 第二單元 人民當家作主 第五課 我國的根本政治制度 1 人民代表大會:我國的國家權力機關教學設計 部編版必修3
- 吉林藝術學院《物聯網原理及應用》2023-2024學年第二學期期末試卷
- 湖南農業大學東方科技學院《耳鼻咽喉科學》2023-2024學年第一學期期末試卷
- 河南科技大學《科學與工程計算方法》2023-2024學年第二學期期末試卷
- 四川鐵道職業學院《水產微生物學實驗》2023-2024學年第二學期期末試卷
- 上海工藝美術職業學院《文本解讀與訓練》2023-2024學年第一學期期末試卷
- 發布前期物業服務合同
- 雙方協議勞動合同
- 內墻工程施工合同
- 工程甲方指令單
- 扒胎機的使用
- 民用爆炸物品出口審批單
- 推拿學全套課件
- SJG 63-2019 建設工程建筑廢棄物減排與綜合利用技術標準-高清現行
- smm7 中文版 工程量清單
- 國學論語中國風國學文化水墨國學文化道德講堂中國風傳統文化ppt模板課件
- 人教統編版高中語文必修下冊第一單元(單元總結)
- GB∕T 26255-2022 燃氣用聚乙烯(PE)管道系統的鋼塑轉換管件
- 煤礦新工人培訓教案全新
- lNG-CNG加氣站土建施工組織設計
評論
0/150
提交評論