【轉】ShellExecute()——運行一個外部程式

來源:互聯網
上載者:User

標籤:

原連結:http://www.verydemo.com/demo_c173_i86999.html

ShellExecute的功能是運行一個外部程式(或者是開啟一個登入的檔案、開啟一個目錄、列印一個檔案等等),並對外部程式有一定的控制。基本簡介  有幾個API函數都可以實現這些功能,但是在大多數情況下ShellExecute是更多的被使用的,同時它並不是太複雜。原型及參數含義  ShellExecute函數原型及參數含義如下:  ShellExecute(
hWnd: HWND; {指定父視窗控制代碼}   Operation: PChar; {指定動作, 譬如: open、print}   FileName: PChar; {指定要開啟的檔案或程式}   Parameters: PChar; {給要開啟的程式指定參數; 如果開啟的是檔案這裡應該是 nil}   Directory: PChar; {預設目錄}   ShowCmd: Integer {開啟選項}   ): HINST; {執行成功會返回應用程式控制代碼; 如果這個值 <= 32, 表示執行錯誤}   //傳回值可能的錯誤有: = 0 {記憶體不足}  ERROR_FILE_NOT_FOUND = 2; {檔案名稱錯誤}  ERROR_PATH_NOT_FOUND = 3; {路徑名錯誤}  ERROR_BAD_FORMAT = 11; {EXE 檔案無效}  SE_ERR_SHARE = 26; {發生共用錯誤}  SE_ERR_ASSOCINCOMPLETE = 27; {檔案名稱不完全或無效}  SE_ERR_DDETIMEOUT = 28; {逾時}  SE_ERR_DDEFAIL = 29; {DDE 事務失敗}  SE_ERR_DDEBUSY = 30; {正在處理其他 DDE 事務而不能完成該 DDE 事務}  SE_ERR_NOASSOC = 31; {沒有相相關 App程式}   //ShowCmd 參數可選值: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","NOTEPAD.EXE",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函數的標準用法,下面將介紹它的特殊用法。
2.特殊用法  如果將FileName參數設定為“http:”協議格式,那麼該函數將開啟預設瀏覽器並連結到指定的URL地址。若使用者機器中安裝了多個瀏覽器,則該函數將根據Windows 9x/NT註冊表中http通訊協定處理常式(Protocols Handler)的設定確定啟動哪個瀏覽器。格式一:http://網站網域名稱。  如:ShellExecute(Handle, "open", "http:// ;  www.neu.edu.cn", NULL, NULL, SW_SHOWNORMAL);

格式二:http://網站網域名稱/網頁檔案名稱。  如:ShellExecute(Handle, "open"," http:// ;  www.neu.edu.cn/default.htm",NULL,NULL,  SW_SHOWNORMAL);  如果將FileName參數設定為“mailto:”協議格式,那麼該函數將啟動預設郵件客戶程式,如Microsoft Outlook(也包括Microsoft Outlook Express)或Netscape Messanger。若使用者機器中安裝了多個郵件客戶程式,則該函數將根據Windows 9x/NT註冊表中mailto通訊協定處理常式的設定確定啟動哪個郵件客戶程式。
格式一:mailto:  如:ShellExecute(Handle,"open", "mailto:", NULL, NULL, SW_SHOWNORMAL);開啟新郵件視窗。
格式二:mailto:使用者帳號@郵件伺服器地址  如:ShellExecute(Handle, "open"," mailto:[email protected]", NULL, NULL, SW_SHOWNORMAL);開啟新郵件視窗,並自動填入收件者地址。若指定多個收件者地址,則收件者地址之間必須用分號或逗號分隔開(下同)。
格式三:mailto:使用者帳號@郵件伺服器地址?  subject=郵件主題&body=郵件內文  如:ShellExecute(handle, ‘open’, ‘ mailto:[email protected]?subject=Hello&Body=This is a test’,NULL, NULL, SW_SHOWNORMAL);開啟新郵件視窗,並自動填入收件者地址、郵件主題和郵件內文。若郵件內文包括多行文本,則必須在每行文本之間加入換行逸出字元%0a。  例子(delphi):  在一個應用程式調用c:\Project1.exe;  ShellExecute(handle, ‘open‘,"c:\Project1.exe",‘字串內容‘,NULL, SW_SHOWNORMAL);  在Project1.exe裡可以調用:  procedure TForm1.FormCreate(Sender: TObject);  var i:integer;  begin  for i:=1 to paramcount do  if ParamStr(i)<>‘‘ then showmessage(ParamStr(i));  end;  最後的那個參數,為視窗指定可視性方面的一個命令。  請用下述任何一個常數  SW_HIDE 隱藏視窗,活動狀態給另一個視窗  SW_MINIMIZE 已最小化的視窗,活動狀態給另一個視窗  SW_RESTORE 用原來的大小和位置顯示一個視窗,同時令其進入活動狀態  SW_SHOW 用當前的大小和位置顯示一個視窗,同時令其進入活動狀態  SW_SHOWMAXIMIZED 已最大化的視窗,並將其啟用  SW_SHOWMINIMIZED 已最小化的視窗,並將其啟用  SW_SHOWMINNOACTIVE 最小化一個視窗,同時不改變使用中視窗  SW_SHOWNA 用當前的大小和位置顯示一個視窗,不改變使用中視窗  SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個視窗,同時不改變使用中視窗  SW_SHOWNORMAL 與SW_RESTORE相同

 

【轉】ShellExecute()——運行一個外部程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.