




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
使用WinExec命令⑴函數(shù)原型:UINTWinExec(LPCSTRlpCmdLine,UINTuCmdShow);⑵參數(shù):lpCmdLine:指向一個空結(jié)束的字符串,串中包含將要履行的應(yīng)用程序的命令行(文件名加上可選參數(shù))。uCmdShow:定義Windows應(yīng)用程序的窗口如何顯示,并為CreateProcess函數(shù)供給STARTUPINFO參數(shù)的wShowWindow成員的值。⑶返回值:若函數(shù)調(diào)用成功,則返回值大于31。若函數(shù)調(diào)用失敗,則返回值為以下之一:0:系統(tǒng)存或資源已耗盡。②ERROR_BAD_FORMAT:EXE文件無效(非Win32.EXE或.EXE影像錯誤)。ERROR_FILE_NOT_FOUND:指定的文件未找到。④ERROR_PATH_NOT_FOUND:指定的路徑未找到。固然Microsoft認(rèn)為WinExec已過時,可是在很多時候,簡單的WinExec函數(shù)還是運(yùn)轉(zhuǎn)新程序的最好方式。簡單地傳遞作為第一個參數(shù)的命令行,還需要決定如何顯示程序(該程序或許會忽視它)的第二個參數(shù)。平時,將其設(shè)置為SW_SHOW,也可試試SW_MINIMIZED或SW_MAXIMIZED。WinExec不一樣意用CreateProcess獲取的所有選項,而它的確簡單。使用ShellExecute命令⑴函數(shù)原型:HINSTANCEShellExecute(HWNDhwnd,LPCTSTRlpOperation,LPCTSTRlpFile,LPCTSTRlpParameters,LPCTSTRlpDirectory,INTnShowCmd);⑵參數(shù):Word資料hwnd:指向父窗口的窗口句柄。此窗口接收應(yīng)用程序產(chǎn)生的任何信息框。lpOperation:一個空結(jié)束的字符串地點,此字符串指定要履行的操作。下邊的操作字符串是有效的:"open"此函數(shù)翻開由參數(shù)lpFile指定的文件,此文件能夠是一個可履行文件或文檔文件,也可是一個文件夾。"print"此函數(shù)打印由參數(shù)lpFile指定的文件,此文件應(yīng)是一個文檔文件,若是此文件是一個可履行文件,則翻開此文件。"explore"此函數(shù)搜尋由參數(shù)lpFile指定的文件夾,此文件應(yīng)是一個文檔文件,此參數(shù)能夠為空。這類狀況下,函數(shù)用于翻開由參數(shù)lpFile指定的文件。lpFile:一個空結(jié)束的字符串地點,此字符串指定要翻開或打印的文件或許是要翻開或搜尋的文件夾。lpParameters:若是參數(shù)lpFile指定一個可履行文件,lpParameters則是一個空結(jié)束的字符串地點,此字符串指定要傳達(dá)給應(yīng)用程序的參數(shù)。若是lpFile指定一個文檔文件,lpParameters應(yīng)為空。lpDirectory:一個空結(jié)束的字符串地點,此字符串指定默認(rèn)目錄。nShowCmd:若是lpFile指定一個可履行文件,nShowCmd表示應(yīng)用程序翻開時如何顯示。若是lpFile指定一個文檔文件,nShowCmd應(yīng)為空。⑶返回值:若函數(shù)調(diào)用成功,則返回值大于32,不然為一個小于等于32的錯誤值。說明:能夠用此函數(shù)翻開或搜尋一個外殼文件夾。翻開文件夾可用下邊任何一種形式:ShellExecute(handle,NULL,path_to_folder,NULL,NULL,SW_SHOWNORMAL);或ShellExecute(handle,"open",path_to_folder,NULL,NULL,SW_SHOWNORMAL);搜尋文件夾,可用以下形式Word資料ShellExecute(handle,"explore",path_to_folder,NULL,NULL,SW_SHOWNORMAL);ShellExecute命令雖已過時但易于獲取。該命令向命令解說程序提出翻開、閱讀或打印文檔或文件夾的懇求,固然能夠用ShellExecute運(yùn)轉(zhuǎn)程序,但平時只發(fā)送文檔名,而命令解說程序則決定要運(yùn)轉(zhuǎn)那個程序。其余在翻開目錄文件夾時,ShellExecute命令特別有用。⑷程序示例下邊經(jīng)過一個例子來說名WinExec和ShellExecute的使用。下邊程序有控制臺程序示例,其使用兩種不一樣的方法,翻開文本文件。下邊程序使用WinExec,并明確指定使用記事本程序。而后,使用ShellExecute,翻開文本文件。程序清單#include<windows.h>#include<iostream.h>voidmain(intargc,char*argv[]){cout<<”O(jiān)peningwithn”;if(WinExec(“notepadreadme.txt”,SH_SHOW)<32)MessagBox(NULL,”Can’tWinExec”,NULL,MB_OK);cout<<”Pressn”;MessagBox(NULL,”PressOKtocontinue”,”ProgrmLaunched”,MB_OK);cout<<”O(jiān)peningwithn”;if(ShellExecute(NULL,”open”,”readme.txt”,NULL,NULL,SW_SHOW)<(HANDLE)32)MessagBox(NULL,”Can’tn”,NULL,MB_OK);}使用CreateProcess命令⑴函數(shù)原型:BOOLCreateProcess(LPCTSTRlpApplicationName,Word資料LPTSTRlpCommandLine,LPSECURITY_ATTRIBUTESlpProcessAttributes,LPSECURITY_ATTRIBUTESlpThreadAttributes,BOOLbInheritHandles,DWORDdwCreationFlags,LPVOIDlpEnvironment,LPCTSTRlpCurrentDirectory,LPSTARTUPINFOlpStartupInfo,LPPROCESS_INFORMATIONlpProcessInformation);⑵參數(shù):lpApplicationName:指向一個以空結(jié)尾的串,他指定了要履行的模塊lpCommandLine:指向一個以空結(jié)尾的串,該串定義了要履行的命令行。lpProcessAttributes:指向一個SECURITY_ATTRIBUTES構(gòu)造,該構(gòu)造決定了返回的句柄能否可被子進(jìn)度繼承。lpThreadAttributes:指向一個SECURITY_ATTRIBUTES構(gòu)造,該構(gòu)造決定了返回的句柄能否可被子進(jìn)度繼承。bInheritHandles,:表示新進(jìn)度能否從調(diào)用進(jìn)度繼承句柄。dwCreationFlags:定義控制優(yōu)先類和進(jìn)度創(chuàng)立的附帶標(biāo)記。lpEnvironment:指向一個新進(jìn)度的環(huán)境塊。lpCurrentDirectory:指向一個以空結(jié)尾的串,該串定義了子進(jìn)度的目前驅(qū)動器和目前目錄。lpStartupInfo:指向一個STARTUPINFO構(gòu)造,該構(gòu)造定義了新進(jìn)度的主窗口將如何顯示。lpProcessInformation:指向PROCESS_INFORMATION構(gòu)造,該構(gòu)造接受對于新進(jìn)度的表示信息。⑶返回值:Word資料若函數(shù)調(diào)用成功,則返回值不為0;若函數(shù)調(diào)用失敗,返回值為0。ShellExecute和WinExec命令用于簡單的作業(yè)。假如要完整控制一個新進(jìn)度,就一定調(diào)用CreateProcess。在上述參數(shù)中,參數(shù)lpStartupInfo是STARTUPINFO構(gòu)造。能夠用來設(shè)置控臺的標(biāo)題,新窗口的的初始大小和地點,及重定向標(biāo)準(zhǔn)輸入和輸出。新程序平時能夠忽視多半這些數(shù)據(jù)項,假如選擇那樣做的話。能夠規(guī)定該構(gòu)造體中的標(biāo)記,已表示要設(shè)置的數(shù)據(jù)段。有時,不想設(shè)置任何信息,也一定傳達(dá)一個有效的指針給空構(gòu)造(確立設(shè)置大小到cb,及設(shè)置dwFlags成員為0)。參數(shù)lpProcessInformation返回進(jìn)度和線程句柄,還包含進(jìn)度和線程ID。這些句柄擁有在參數(shù)lpProcessAttributes和lpThreadAttributes中規(guī)定的接見。要注意,針對CreateProcess的一些參數(shù)對控制臺應(yīng)用程序是特定的,而其余參數(shù)則對各樣應(yīng)用程序?qū)嵱?。大部分狀況下,其實不必定要填入STARTUPINFO構(gòu)造,但不論如何須須供給它。其返回值是布爾型的,而真實感興趣的返回值發(fā)生于作為參數(shù)傳遞的構(gòu)造中(PROCESS_INFORMATION)。CreateProcess返回該構(gòu)造中的進(jìn)度ID及其句柄,以及初始線程ID及其句柄。能夠?qū)D發(fā)送到其余進(jìn)度,或使用句柄來控制新進(jìn)度。也能夠考慮C函數(shù):1system( )2spawn( )函數(shù)系列3exec( )函數(shù)系列c++啟動exe(外面程序)珍藏對于三個SDK函數(shù):WinExec,ShellExecute,CreateProcess的其余注意事項:【1】定義頭文件一定定義以下兩個頭文件:Word資料#include<shlobj.h>//可替代為windows.h#include<shellapi.h>假如定義了頭文件#include<windows.h>的話就不用然義#include<shlobj.h>了。【2】定義路徑C++中所表示的路徑要用"\\"而不是平時所用的"\",所以以上三個函數(shù)表示路徑都為:disk:\\Directory\\...\\FilenameWinExec("D:\\ProgramFiles\\Test\\Test.exe",SW_SHOWMAXIMIZED);ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL);1、調(diào)用API:intsystem(constchar*command);你能夠傳入一命令,啟動某個程序。如"ping.vccode.","YourExe"等等可是這里有幾點要值得注意:、他不會馬上返回,直到你啟動的程序履行達(dá)成。、假如你啟動是windows程序,它仍舊會啟動一個控制臺,這就給人感覺太差勁了,但假如自己是控制臺的,并且又需要等候它的達(dá)成,那這將是比較好的選擇。、它的返回值代表能否履行成功以及程序的退出碼。、不可以運(yùn)轉(zhuǎn)*.txt文件或".百度."2、調(diào)用API:UINTWinExec(LPCSTRlpCmdLine,//commandlineUINTuCmdShow//windowstyleWord資料);這個API與API:system相同的使用簡單,同用是使用命令行型式??墒撬cAPI:system對比,有幾個長處:、它將啟動了一個新進(jìn)度,并且馬上返回,所以你的程序無需等候。、它的多了一個參數(shù):uCmdShow,經(jīng)過它你能夠必定程度上控件窗體的顯示,比方讓它后臺運(yùn)轉(zhuǎn)而不顯示出來。、它不論啟動控制臺程序還是windows程序都只做你想要做的事。它的不足之處:、它完整與本進(jìn)度離開,沒法對做些必需的控制、沒法得悉啟動的程序能否退出。、得不到啟動的程序的退出碼。、不可以運(yùn)轉(zhuǎn)*.txt文件或".百度."3、調(diào)用:HINSTANCEShellExecute(HWNDhwnd,LPCTSTRlpVerb,LPCTSTRlpFile,LPCTSTRlpParameters,LPCTSTRlpDirectory,INTnShowCmd);它也有WinExec相同的弊端。Word資料它固然傳回一個HINSTANCE,但他其實不是真實的句柄,我們僅能拿它來做一些錯誤值檢查。但它的功能比前二者更強(qiáng)盛,它履行系統(tǒng)的Shell命令。1、2中假如傳入“XX.txt”,它們將不可以成功履行ShellExecute,卻能很好地履行,它將啟動一個默認(rèn)的文字辦理程序來翻開它。1、2中假如傳入“.vccode.”,將不可以成功履行,而ShellExecute卻能很好地履行,它將啟動一個默認(rèn)閱讀器來翻開這個。參數(shù)解說:參數(shù)1hwnd:一窗體句柄,將作為啟動的程序的父窗體。參數(shù)2lpVerb:你想履行的操作(edit、explore、find、open、print、properties),你也能夠傳入NULL值,它將履行默認(rèn)操作(win2000從前與以后辦理略有差異,請見MSDN)。參數(shù)3lpFile:一文件名或操作的對象。參數(shù)4lpParameters:假如lpFile是一可履行文件,這個將作為它的參數(shù)。它的格式由履行的操作決定。并且當(dāng)lpFile為一document文件時,此參數(shù)需為NULL。參數(shù)5lpDirectory:指定它的工作目錄。參數(shù)6nShowCmd:窗體顯示的控制。以下是幾個例子://啟動一個Dos命令,啟動windows程序相同Word資料::ShellExecute(this->GetSafeHwnd( ),NULL,"ping",".vccode.",NULL,SW_SHOWNORMAL);//翻開一個文件::ShellExecute(this->GetSafeHwnd( ),"open","ReadMe.txt",NULL,NULL,SW_SHOWNORMAL);上邊的動詞可傳可不傳,但假如"ReadMe.txt"為"ReadMe.bat"那就得指定,不然將會當(dāng)命令履行,而不是翻開它??煞_目錄::ShellExecute(this->GetSafeHwnd( ),"open","c:",NULL,NULL,SW_SHOWNORMAL);//可翻開網(wǎng)頁::ShellExecute(this->GetSafeHwnd( ),"open",".vccode.",NULL,NULL,SW_SHOWNORMAL);閱讀一個目錄ShellExecute(handle,"explore","c:"NULL,NULL,SW_SHOWNORMAL);查察一個文件或目錄的屬性使用ShellExecuteEx,實現(xiàn)請見所附源碼對應(yīng)部分假如沒有特別的控制要求,它己能為我們做很了,但當(dāng)我們必定要能控件這個啟動的進(jìn)度時,那我們就得使用第4點了。Word資料4:調(diào)用API:BOOLCreateProcess(LPCTSTRlpApplicationName,//nameofexecutablemoduleLPTSTRlpCommandLine,//commandlinestringLPSECURITY_ATTRIBUTESlpProcessAttributes,//SDLPSECURITY_ATTRIBUTESlpThreadAttributes,//SDBOOLbInheritHandles,//handleinheritanceoptionDWORDdwCreationFlags,//creationflagsLPVOIDlpEnvironment,//newenvironmentblockLPCTSTRlpCurrentDirectory,//currentdirectorynameLPSTARTUPINFOlpStartupInfo,//startupinformationLPPROCESS_INFORMATIONlpProcessInformation//processinformation);常常看到這個函數(shù)就讓人生畏,它參數(shù)多,并且參數(shù)種類也這樣莫生。是的,正是由于這樣它才功能強(qiáng)盛!但不要怕,作為一般使用,特別簡單!下邊即是一個簡單的例子(啟動記事本):STARTUPINFOStartInfo;PROCESS_INFORMATIONpinfo;//對程序的啟動信息不作任何設(shè)定,所有清0Word資料memset(&StartInfo,0,sizeof(STARTUPINFO));StartInfo.cb=sizeof(STARTUPINFO);//設(shè)定構(gòu)造的大小BOOLret=CreateProcess(NULL,//啟動程序路徑名"notepad.exe",//參數(shù)(當(dāng)exeName為NULL時,可將命令放入?yún)?shù)前)NULL,//使用默認(rèn)進(jìn)度安全屬性NULL,//使用默認(rèn)線程安全屬性FALSE,//句柄不繼承NORMAL_PRIORITY_CLASS,//使用正常優(yōu)先級NULL,//使用父進(jìn)度的環(huán)境變量NULL,//指定工作目錄&StartInfo,//子進(jìn)度主窗口如何顯示&pinfo);//用于寄存新進(jìn)度的返回信息這樣在創(chuàng)立成功這后我們就能夠從pinfo中找到它的:進(jìn)度句柄,線程句柄,進(jìn)度ID,線程ID在附件源碼中演示了進(jìn)度序的啟動,停止。實質(zhì)上我們能夠經(jīng)過很多方式如存共享、父進(jìn)度窗體句體傳入仍后從信息中獲取子進(jìn)度窗體句柄等,來實現(xiàn)更多的控制。Word資料想很好地掌握CreateProcess,可拜見人民郵電第一版社第一版的<<Windows系統(tǒng)編程>>,它的“進(jìn)度”部份作了很詳細(xì)的說明。例程:#include<windows.h>#include<shellapi.h>#include<stdio.h>voidmain( ){HWNDhandle;printf("Function<WinExec>:\nItcanrunacmdcommand,butcan`topen*.txtand\".*.*\"\n");printf("PleasepressEntergoon\n");getchar( );WinExec("mspaint.exe",SW_SHOWNOACTIVATE);printf("Function<ShellExecute>:\nItcanrunacmdcommandtoopenfileorweb\n\n");getchar( );printf("Openatxtfile\n");ShellExecute(NULL,"open","C:\\test.txt",NULL,NULL,SW_MINIMIZE);getchar( );printf("Openaweb\n");Word資料ShellExecute(NULL,NULL,".百度.",NULL,NULL,SW_SHOWNA);getchar( );printf("Runacmdcommand:ping.sina.\n");ShellExecute(NULL,NULL,"ping","sina.",NULL,SW_SHOWNORMAL);getchar( );printf("翻開目錄\n");ShellExecute(NULL,"open","c:",NULL,NULL,SW_SHOWNORMAL);getchar( );printf("閱讀目錄\n");ShellExecute(NULL,"explore","c:",NULL,NULL,SW_SHOWNORMAL);getchar( );printf("文件屬性\n");ShellExecute(handle,"properties","C:\\test.txt",NULL,NULL,SW_MINIMIZE);printf("%s",handle);}/*shellExecute的第二個參數(shù)為你想履行的操作(edit,explore,find,open,print,properties),也可為NULL*/}/*SW_HIDEHide
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村銷售合同范本
- 農(nóng)村姐弟分地合同范例
- 儀器購置安裝合同范本
- 利潤分成增加合同范例
- 農(nóng)業(yè)地皮出售合同范例
- 農(nóng)田租田合同范例
- 加濕器工程合同范例
- 公路路基勞務(wù)分包合同范例
- 倉儲存儲合同范例
- 個人雇保姆合同范例
- RRU設(shè)計原理與實現(xiàn)
- 工程質(zhì)量責(zé)任制和考核辦法
- 《室內(nèi)展示設(shè)計》課件
- 中級消防設(shè)施操作員考試題庫
- 服裝店售后培訓(xùn)課件
- 新舊系統(tǒng)數(shù)據(jù)遷移方案
- 3D打印與傳統(tǒng)工藝美術(shù)的融合創(chuàng)新
- 運(yùn)動損傷預(yù)防與處理的案例分析
- 第四次工業(yè)革命課件
- nfc果汁加工工藝
- 《中國十大元帥》課件
評論
0/150
提交評論