WinExec() and ShellExecute() 的用法

在MFC裡要開啟外部程式有三個API可以用,Shellexecute()被運用的機率比較高,主要是它可以控制的參數也比較多。

1. Shellexecute() 函數原型

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

參數說明:

hwnd 所掌控的window handle,一般設為NULL
lpOperation 檔案執行的方式,如"open","print","explore"分別對應 "開啟","列印","瀏覽", 若不設定,則表示以預設值為主。
lpFile 所要執行的檔案名稱
lpParameters 指定給lpFile檔案所需的參數
lpDirectory lpFile檔案目錄
nShowCmd 檔案顯示方式,可設定如下參數:
SW_HIDE 隱藏
SW_MAXIMIZE 最大化
SW_MINIMIZE 最小化,並把Z order順序在此視窗之後(即視窗下一層)的視窗啟動
SW_RESTORE 啟動視窗並還原為初始化大小
SW_SHOW 以當前大小和狀態啟動視窗
SW_SHOWDEFAULT 以預設方式運行
SW_SHOWMAXIMIZED 啟動視窗並最大化
SW_SHOWMINIMIZED 啟動視窗並最小化
SW_SHOWMINNOACTIVE 最小化但不改變當前啟動的視窗
SW_SHOWNA 以當前狀態顯示視窗但不改變當前啟動的視窗
SW_SHOWNOACTIVATE 以初始化大小顯示視窗但不改變當前啟動的視窗
SW_SHOWNORMAL 啟動並顯示視窗,如果是最大(小)化,視窗將會還原。第一次運行程式 時應該使用這個值

 

範例:

開啟DOS console mode,並顯示目錄:

                   ShellExecute(handle, NULL, "cmd.exe", "/k dir", NULL, SW_SHOW);

 

2. WinExec()

UINT WINAPI WinExec(  __in  LPCSTR lpCmdLine,  __in  UINT uCmdShow);

 lpCmdLine [in] : 所要執行的命令,若只有檔名沒有目錄,系統將依以下順序搜尋檔案:                          1. 依開啟的程式而定                          2. 目前的目錄                          3. 系統目錄                          4. Windows目錄                          5. PATH環境變數所設定的目錄 uCmdShow [in] : 檔案顯示方式,參數可參考ShellExecute()相同。

 

範例:

開啟DOS console mode,並顯示目錄:

                WinExec("cmd.exe /k dir", SW_SHOW);

 

在使用上,以ShellExecute()較好用。個人在使用中有遇到,在unicode的狀態下,WinExec()有字串轉換的問題。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章