Monday, August 29, 2005

 

ShellExecute的用法

ShellExecute的用法

Filed under: Programming Windows Driver C/C++— garylee @ 9:06 am
在Windows下面,要讓自己的程式能夠執行其他的程式,我想最簡單的作法就是透過ShellExecute()這個函式來做。

這個函式的Prototype如下:

HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);

其中hwnd是主要執行該程式的視窗,通常就是我們自己的程式視窗。不過也可以給NULL,表示沒有特定的視窗。lpOperation是您要執行的動作,這個動作有三個:"open", “print", “explorer"。open的方式是讓系統自己依據檔案的型態來決定以何種方式開啟它。舉例來說,如果lpFile是一個可執行檔,那麼這個檔案就會被執行。如果他是一個文件檔,則會被對應的軟體所開啟。如果開啟的是一個目錄,自然就是用Explorer來開啟囉。print很明顯的就是將檔案送到printer queue裡面去列印。最後的explorer原則是只能用在目錄,是用來開啟目錄用的。

lpFile正如前面所說就是一個表示要開啟的檔案。而lpParameters主要用於lpFile所指向的是一個可執行檔時,用這個參數將執行檔所需的參數傳給它。而lpDirectory是進行開啟動作時的預設路徑,如果是NULL,表示為預設路徑。

最後一個nShowCmd主要表示該檔案開啟時的行為,主要有下面幾個值可用:

SW_HIDE 執行檔案時,將視窗隱藏起來。.
SW_MAXIMIZE 將視窗最大化執行
SW_MINIMIZE 將視窗最小化執行
SW_RESTORE 若視窗執行時是最小化,透過此參數,可將其回復原來大小顯示。
SW_SHOW 以視窗預設大小顯示,並且設為主動視窗
SW_SHOWDEFAULT 同SW_SHOW
SW_SHOWMAXIMIZED 執行時將視窗最大化,並且設定為主動視窗。
SW_SHOWMINIMIZED 執行時將視窗最小化,並且設定為主動視窗。
SW_SHOWMINNOACTIVE 執行時將視窗最小化,並且不會變動現行的主動視窗。
SW_SHOWNA 執行時並不會變動現行的主動視窗。
SW_SHOWNOACTIVATE 同SW_SHOWNA。
SW_SHOWNORMAL 當程式執行時,若為最大化或最小化,將會回復到原來的大小,並且設定為主動視窗。

下面幾個例子介紹幾個常見的用法:
// 開啟某個目錄:
ShellExecute(NULL, “open", “c:\windows", NULL, NULL, 0);
// 開啟某個程式:
ShellExecute(NULL, “open", “c:\windows\notepad.exe", “c:\xxx.txt", NULL, SW_SHOWNORMAL);
// 列印某份文件:
ShellExecute(NULL, “print", “c:\xxx.doc", NULL, NULL, 0);
// 開啟某個網頁:
ShellExecute(NULL, “open", “https://www.google.com/", NULL, NULL, 0);

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?