2014年10月22日 星期三

ShellExecute

ShellExecute
http://www.dev.idv.tw/mediawiki/index.php/ShellExecute的用法

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 -- open的方式是讓系統自己依據檔案的型態來決定以何種方式開啟它。舉例來說,如果lpFile是一個可執行檔,那麼這個檔案就會 被執行。如果他是一個文件檔,則會被對應的軟體所開啟。如果開啟的是一個目錄,自然就是用Explorer來開啟囉。
  • print -- 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);

沒有留言:

張貼留言