vc開啟檔案(ShellExecute和WinExec)
ShellExecute函式原型及引數含義如下:
ShellExecute(
HWND hWnd, //父視窗控制代碼
LPCSTR lpOperation, //操作型別
LPCSTR lpFile, //要進行操作的檔案或路徑
LPCSTR lpParameters, //當lpOperation為“explore”時指定要傳遞的引數,通常設為NULL
LPCSTR lpDirectory, //指定預設目錄,通常設為NULL
INT nShowCmd //檔案開啟的方式,以通常方式還是最大化或最小化顯示
)
首先要包含標頭檔案shellapi.h
#include <shellapi.h>
例子如下:
//呼叫計算器
ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);
//呼叫記事本
ShellExecute(NULL,"open","NOTEPAD.EXE",NULL,NULL,SW_SHOWNORMAL);
//開啟超連結
//開啟路徑檔案 PathName(檔案路徑)
ShellExecute(NULL,"open",PathName,NULL,NULL,SW_SHOWNORMAL);
●hWnd:用於指定父視窗控制代碼。當函式呼叫過程出現錯誤時,它將作為Windows訊息視窗的父視窗。例如,可以將其設定為應用程式主視窗控制代碼,即Application.Handle,也可以將其設定為桌面視窗控制代碼(用GetDesktopWindow函式獲得)。
●Operation:用於指定要進行的操作。其中“open”操作表示執行由FileName引數指定的程式,或開啟由FileName引數指定的檔案或資料夾;“print”操作表示列印由FileName引數指定的檔案;“explore”操作表示瀏覽由FileName引數指定的資料夾。當引數設為nil時,表示執行預設操作“open”。
●FileName:用於指定要開啟的檔名、要執行的程式檔名或要瀏覽的資料夾名。
●Parameters:若FileName引數是一個可執行程式,則此引數指定命令列引數,否則此引數應為nil或PChar(0)。
●Directory:用於指定預設目錄。
●ShowCmd:若FileName引數是一個可執行程式,則此引數指定程式視窗的初始顯示方式,否則此引數應設定為0。
若ShellExecute函式呼叫成功,則返回值為被執行程式的例項控制代碼。若返回值小於32,則表示出現錯誤。
上述僅僅是ShellExecute函式的標準用法,下面將介紹它的特殊用法。
最後的那個引數 nShowCmd ,為視窗指定可視性方面的一個引數。
請用下述任何一個常數
SW_HIDE 隱藏視窗,啟用另一視窗
SW_MINIMIZE 最小化視窗,啟用另一視窗
SW_RESTORE 用原來的大小和位置顯示一個視窗,同時令其進入活動狀態
SW_SHOW 用當前的大小和位置顯示一個視窗,同時令其進入活動狀態
SW_SHOWMAXIMIZED 最大化視窗,並將其啟用
SW_SHOWMINIMIZED 最小化視窗,並將其啟用
SW_SHOWMINNOACTIVE 最小化一個視窗,但不改變活動視窗
SW_SHOWNA 用當前的大小和位置顯示一個視窗,不改變活動視窗
SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個視窗,同時不改變活動視窗
SW_SHOWNORMAL 與SW_RESTORE相同
WinExec函式
⑴ 函式原型: UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow); ⑵ 引數: lpCmdLine:指向一個空結束的字串,串中包含將要執行的應用程式的命令列(檔名加上可選引數)。 uCmdShow:定義Windows應用程式的視窗如何顯示,併為CreateProcess函式提供STARTUPINFO引數的wShowWindow成員的值。 ⑶ 返回值: 若函式呼叫成功,則返回值大於31。若函式呼叫失敗,則返回值為下列之一: ① 0:系統記憶體或資源已耗盡。 ② ERROR_BAD_FORMAT:EXE檔案無效(非Win32.EXE或.EXE影像錯誤)。 ③ ERROR_FILE_NOT_FOUND:指定的檔案未找到。 ④ ERROR_PATH_NOT_FOUND:指定的路徑未找到。 大於 31 {呼叫成功} 等於 0 {記憶體不足} ERROR_FILE_NOT_FOUND = 2; {檔名錯誤} ERROR_PATH_NOT_FOUND = 3; {路徑名錯誤} ERROR_BAD_FORMAT = 11; {EXE 檔案無效} //uCmdShow 引數可選值: SW_HIDE = 0; {隱藏, 並且工作列也沒有最小化圖示} SW_SHOWNORMAL = 1; {用最近的大小和位置顯示, 啟用} SW_NORMAL = 1; {同 SW_SHOWNORMAL} SW_SHOWMINIMIZED = 2; {最小化, 啟用} SW_SHOWMAXIMIZED = 3; {最大化, 啟用} SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED} SW_SHOWNOACTIVATE = 4; {用最近的大小和位置顯示, 不啟用} SW_SHOW = 5; {同 SW_SHOWNORMAL} SW_MINIMIZE = 6; {最小化, 不啟用} SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE} SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE} SW_RESTORE = 9; {同 SW_SHOWNORMAL} SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL} SW_MAX = 10; {同 SW_SHOWNORMAL}例子:
ShellExecute(NULL,"open","calc.exe",NULL,NULL,SW_SHOWNORMAL);//呼叫計算器
ShellExecute(NULL,"open","目錄/檔案路徑",NULL,NULL,SW_SHOWNORMAL);//開啟目錄/檔案
ShellExecute(NULL, NULL, "notepad.exe yourtxt.txt ", NULL, NULL, SW_SHOWNORMAL);
WinExec( "notepad.exe your.txt ", SW_SHOW);