免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

VC中如何打開指定程序或者文件(轉(zhuǎn))...

 浮 生 2009-07-06
VC中如何打開指定程序或者文件(轉(zhuǎn))
[ 分類:開發(fā)資料 ]   [閱讀:1799 ]   [ 日期:2008-11-11 ]   [ 來自:飄雪工作室 ]
使用WinExec命令 

⑴ 函數(shù)原型: 

UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow); 

⑵ 參數(shù):
 

lpCmdLine:指向一個(gè)空結(jié)束的字符串,串中包含將要執(zhí)行的應(yīng)用程序的命令行(文件名加上可選參數(shù))。 

uCmdShow:定義Windows應(yīng)用程序的窗口如何顯示,并為CreateProcess函數(shù)提供STARTUPINFO參數(shù)的wShowWindow成員的值。 

⑶ 返回值: 

若函數(shù)調(diào)用成功,則返回值大于31。若函數(shù)調(diào)用失敗,則返回值為下列之一: 

① 0:系統(tǒng)內(nèi)存或資源已耗盡。 

② ERROR_BAD_FORMAT:EXE文件無效(非Win32.EXE或.EXE影像錯(cuò)誤)。 

③ ERROR_FILE_NOT_FOUND:指定的文件未找到。 

④ ERROR_PATH_NOT_FOUND:指定的路徑未找到。 

雖然Microsoft認(rèn)為WinExec已過時(shí),但是在許多時(shí)候,簡單的WinExec函數(shù)仍是運(yùn)行新程序的最好方式。簡單地傳送作為第一個(gè)參數(shù)的 命令行,還需要決定如何顯示程序(該程序也許會忽視它)的第二個(gè)參數(shù)。通常,將其設(shè)置為SW_SHOW,也可嘗試SW_MINIMIZED或 SW_MAXIMIZED。WinExec不允許用CreateProcess獲得的所有選項(xiàng),而它的確簡單。 

使用ShellExecute命令 

⑴ 函數(shù)原型: 

Quote:
HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd); 
  

⑵ 參數(shù): 

hwnd:指向父窗口的窗口句柄。此窗口接收應(yīng)用程序產(chǎn)生的任何信息框。 

lpOperation:一個(gè)空結(jié)束的字符串地址,此字符串指定要執(zhí)行的操作。下面的操作字符串是有效的: 

"open" 此函數(shù)打開由參數(shù)lpFile指定的文件,此文件可以是一個(gè)可執(zhí)行文件或文檔文件,也可是一個(gè)文件夾。 
"print" 此函數(shù)打印由參數(shù)lpFile指定的文件,此文件應(yīng)是一個(gè)文檔文件,假如此文件是一個(gè)可執(zhí)行文件,則打開此文件。 
"explore" 此函數(shù)搜索由參數(shù)lpFile指定的文件夾,此文件應(yīng)是一個(gè)文檔文件, 

此參數(shù)可以為空。這種情況下,函數(shù)用于打開由參數(shù)lpFile指定的文件。 

lpFile:一個(gè)空結(jié)束的字符串地址,此字符串指定要打開或打印的文件或者是要打開或搜索的文件夾。 

lpParameters:假如參數(shù)lpFile指定一個(gè)可執(zhí)行文件,lpParameters則是一個(gè)空結(jié)束的字符串地址,此字符串指定要傳遞給應(yīng)用程序的參數(shù)。假如lpFile指定一個(gè)文檔文件,lpParameters應(yīng)為空。 

lpDirectory:一個(gè)空結(jié)束的字符串地址,此字符串指定默認(rèn)目錄。 

nShowCmd:假如lpFile指定一個(gè)可執(zhí)行文件,nShowCmd表明應(yīng)用程序打開時(shí)如何顯示。假如lpFile指定一個(gè)文檔文件,nShowCmd應(yīng)為空。 

⑶ 返回值: 

若函數(shù)調(diào)用成功,則返回值大于32,否則為一個(gè)小于等于32的錯(cuò)誤值。 

說明:可以用此函數(shù)打開或搜索一個(gè)外殼文件夾。打開文件夾可用下面任何一種形式: 

Code:

ShellExecute(handle, NULL, path_to_folder, NULL, NULL, SW_SHOWNORMAL); 


或 

Quote:
ShellExecute(handle, "open", path_to_folder, NULL, NULL, SW_SHOWNORMAL); 


搜索文件夾,可用如下形式 

ShellExecute(handle, "explore", path_to_folder, NULL, NULL, SW_SHOWNORMAL); 

ShellExecute命令雖已過時(shí)但易于得到。該命令向命令解釋程序提出打開、瀏覽或打印文檔或文件夾的請求,雖然可以用 ShellExecute運(yùn)行程序,但通常只發(fā)送文檔名,而命令解釋程序則決定要運(yùn)行那個(gè)程序。另外在打開目錄文件夾時(shí),ShellExecute命令非 常有用。 

⑷ 程序示例 

下面通過一個(gè)例子來說名WinExec和ShellExecute的使用。下面程序有控制臺程序示例,其使用兩種不同的方法,打開文本文件。下面程序使用WinExec,并明確指定使用記事本程序。然后,使用ShellExecute,打開文本文件。 

程序清單 

Code:
#include <windows.h> 
#include <iostream.h> 

void main(int argc,char *argv[]) 

cout < <”Opening with WinExec\n”; 
if (WinExec(“notepad readme.txt”,SH_SHOW) <32) 
MessagBox(NULL,”Can’t WinExec”,NULL,MB_OK); 
cout < <”Press Enter\n”; 
MessagBox(NULL,”Press OK to continue”,”Progrm Launched”,MB_OK); 
cout < <”Opening with ShellExecute\n”; 
if (ShellExecute (NULL,”open”,”readme.txt”,NULL,NULL,SW_SHOW) <(HANDLE) 32) 
MessagBox(NULL,”Can’t ShellExecute\n”,NULL,MB_OK); 


使用CreateProcess命令 

⑴ 函數(shù)原型: 

Code:
BOOL CreateProcess( 
LPCTSTR lpApplicationName, 
LPTSTR lpCommandLine, 
LPSECURITY_ATTRIBUTES lpProcessAttributes, 
LPSECURITY_ATTRIBUTES lpThreadAttributes, 
BOOL bInheritHandles, 
DWORD dwCreationFlags, 
LPVOID lpEnvironment, 
LPCTSTR lpCurrentDirectory, 
LPSTARTUPINFO lpStartupInfo, 
LPPROCESS_INFORMATION lpProcessInformation 
); 


⑵ 參數(shù): 

lpApplicationName:指向一個(gè)以空結(jié)尾的串,他指定了要執(zhí)行的模塊 

lpCommandLine:指向一個(gè)以空結(jié)尾的串,該串定義了要執(zhí)行的命令行。 

lpProcessAttributes:指向一個(gè)SECURITY_ATTRIBUTES結(jié)構(gòu),該結(jié)構(gòu)決定了返回的句柄是否可被子進(jìn)程繼承。 

lpThreadAttributes:指向一個(gè)SECURITY_ATTRIBUTES結(jié)構(gòu),該結(jié)構(gòu)決定了返回的句柄是否可被子進(jìn)程繼承。 

bInheritHandles,:表明新進(jìn)程是否從調(diào)用進(jìn)程繼承句柄。 

dwCreationFlags:定義控制優(yōu)先類和進(jìn)程創(chuàng)建的附加標(biāo)志。 

lpEnvironment:指向一個(gè)新進(jìn)程的環(huán)境塊。 

lpCurrentDirectory:指向一個(gè)以空結(jié)尾的串,該串定義了子進(jìn)程的當(dāng)前驅(qū)動器和當(dāng)前目錄。 

lpStartupInfo:指向一個(gè)STARTUPINFO結(jié)構(gòu),該結(jié)構(gòu)定義了新進(jìn)程的主窗口將如何顯示。 

lpProcessInformation:指向PROCESS_INFORMATION結(jié)構(gòu),該結(jié)構(gòu)接受關(guān)于新進(jìn)程的表示信息。 

⑶ 返回值: 

若函數(shù)調(diào)用成功,則返回值不為0;若函數(shù)調(diào)用失敗,返回值為0。 

ShellExecute和WinExec命令用于簡單的作業(yè)。如果要完全控制一個(gè)新進(jìn)程,就必須調(diào)用CreateProcess。 

在上述參數(shù)中,參數(shù)lpStartupInfo是STARTUPINFO結(jié)構(gòu)??梢杂脕碓O(shè)置控臺的標(biāo)題,新窗口的的初始大小和位置,及重定向標(biāo)準(zhǔn)輸入 和輸出。新程序通??梢院雎远鄶?shù)這些數(shù)據(jù)項(xiàng),如果選擇那樣做的話??梢砸?guī)定該結(jié)構(gòu)體中的標(biāo)志,已表明要設(shè)置的數(shù)據(jù)段。有時(shí),不想設(shè)置任何信息,也必須傳遞 一個(gè)有效的指針給空結(jié)構(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)用程序有用。大多數(shù)情況下,并不一定要填入 STARTUPINFO結(jié)構(gòu),但無論如何必須提供它。其返回值是布爾型的,而真正感興趣的返回值發(fā)生于作為參數(shù)傳送的結(jié)構(gòu)中 (PROCESS_INFORMATION)。CreateProcess返回該結(jié)構(gòu)中的進(jìn)程ID及其句柄,以及初始線程ID及其句柄。可以將ID發(fā)送到 其它進(jìn)程,或使用句柄來控制新進(jìn)程。

 


    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多