呼叫外部檔案(ShellExecute)

2022-03-26 01:01:49 字數 2900 閱讀 7045

有三個api函式可以執行可執行檔案winexec、shellexecute和createprocess。createp

rocess因為使用複雜,比較少用。 winexec主要執行exe檔案。如:

winexec('notepad.exe readme.txt', sw_show);

shellexecute不僅可以執行exe檔案,也可以執行已經關聯的檔案。

首先必須引用shellapi.pas單元:uses shellapi;

1.標準用法

shellexecute函式原型及引數含義如下:

function shellexecute(hwnd: hwnd; operation, filename, parameters,directory:

pchar; showcmd: integer): hinst; stdcall;

●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)的設定確定啟動哪個瀏覽器。

如:shellexecute(handle, 'open', '', nil, nil, sw_shownormal);

如:shellexecute(handle, 'open', '' ,nil,nil,

sw_shownormal);

如果將filename引數設定為「mailto:」協議格式,那麼該函式將啟動預設郵件客戶程式

,如microsoft outlook(也包括microsoft outlook express)或netscape messanger。若

使用者機器中安裝了多個郵件客戶程式,則該函式將根據windows 9x/nt登錄檔中mailto協議處

理程式的設定確定啟動哪個郵件客戶程式。

格式一:mailto:

如:shellexecute(handle,『open』, 『mailto:』, nil, nil, sw_shownormal);

開啟新郵件視窗。

如:shellexecute(handle, 『open』,『 mailto:[email protected]』, nil, nil, sw_shownormal);

開啟新郵件視窗,並自動填入收件人位址。若指定多個收件人位址,則收件人位址之間必須

用分號或逗號分隔開(下同)。

如:shellexecute(handle, 『open』, 『 mailto:[email protected]?subject=he

llo&body=this is a test』, nil, nil, sw_shownormal);開啟新郵件視窗,並自動填入收

件人位址、郵件主題和郵件正文。若郵件正文包括多行文字,則必須在每行文字之間加入換

行轉義字元%0a。

例子(delphi):

在乙個應用程式呼叫c:\project1.exe;

shellexecute(handle, 'open','c:\project1.exe','字串內容',nil, 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(handle,nil,pchar(''),nil,nil,sw_shownormal);

c 呼叫外部檔案

1 c 呼叫exe檔案 system.diagnostics.process.start calc.exe 這樣就能啟動了,當然後你也可以來容錯處理。2 如何在c 中呼叫外部dos程式?使用process物件 system.diagnostics.process p new system.diagn...

JSP呼叫外部js檔案

在jsp中呼叫外部js檔案分兩種情況 1.一般來說jsp呼叫外部js的時候是使用jsp檔案的相對路徑。例如 js與jsp在同乙個資料夾下 script src paging.js js和jsp不在同乙個資料夾下 script src js paging.js 2.如果是使用struts 到jsp時。...

delphi怎樣呼叫外部EXE檔案

delphi怎樣呼叫外部exe檔案 delphi怎樣呼叫外部exe檔案 方法一uses winprocs begin winexec end.和呼叫pascal庫函式沒什麼兩樣。方法二用shellexecute更好,在uses段加入shellapi,使用時如 第乙個引數為父視窗控制代碼 第二個引數為...