1. 程式人生 > >vc開啟檔案(ShellExecute和WinExec)

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);