有三個api函式可以執行可執行檔案winexec、shellexecute和createprocess。
1.createprocess因為使用複雜,比較少用。
2.winexec主要執行exe檔案。如:winexec('notepad.exe readme.txt', sw_show);
3.shellexecute不僅可以執行exe檔案,也可以執行已經關聯的檔案。
首先必須引用shellapi.pas單元:uses shellapi;
1).標準用法
shellexecute函式原型及引數含義如下:
function shellexecute(hwnd: hwnd; operation, filename, parameters,directory: pchar; showcmd: integer): hinst; stdcall;
●hwnd:用於指定父視窗控制代碼。當函式呼叫過程出現錯誤時,它將作為windows訊息視窗的父視窗。例如,可以將其設定為應用程式主視窗
●operation:用於指定要進行的操作。其中「open」操作表示執行由filename引數指定的程式,或開啟由filename引數指定的檔案或檔案
夾;「print」操作表示列印由filename引數指定的檔案;「explore」操作表示瀏覽由filename引數指定的資料夾。當引數設為nil時,表示執
行預設操作「open」。
●filename:用於指定要開啟的檔名、要執行的程式檔名或要瀏覽的資料夾名。
●parameters:若filename引數是乙個可執行程式,則此引數指定命令列引數,否則此引數應為nil或pchar(0)。
●directory:用於指定預設目錄。
●showcmd:若filename引數是乙個可執行程式,則此引數指定程式視窗的初始顯示方式,否則此引數應設定為0。
若shellexecute函式呼叫成功,則返回值為被執行程式的例項控制代碼。若返回值小於32,則表示出現錯誤。
上述僅僅是shellexecute函式的標準用法,下面將介紹它的特殊用法。
2).特殊用法
,則該函式將根據windows 9x/nt登錄檔中http協議處理程式(protocols handler)的設定確定啟動哪個瀏覽器。
格式一:http://**網域名稱。
如:shellexecute(handle, 『open』, nil, nil, sw_shownormal);
格式二:http://**網域名稱/網頁檔名。
如:shellexecute(handle, 『open』,
如果將filename引數設定為「mailt」協議格式,那麼該函式將啟動預設郵件客戶程式,如microsoft outlook(也包括microsoft
outlook express)或netscape messanger。若使用者機器中安裝了多個郵件客戶程式,則該函式將根據windows 9x/nt登錄檔中mailto協議處理
程式的設定確定啟動哪個郵件客戶程式。
格式一:mailt
如:shellexecute(handle,『open』, 『mailt』, nil, nil, sw_shownormal);開啟新郵件視窗。
格式二:mailt使用者賬號@郵件伺服器位址
如:shellexecute(handle, 『open』,『 [email protected]』, nil, nil, sw_shownormal);開啟新郵件視窗,並自動填入收
件人位址。若指定多個收件人位址,則收件人位址之間必須用分號或逗號分隔開(下同)。
格式三:mailt使用者賬號@郵件伺服器位址?subject=郵件主題&body=郵件正文
如:shellexecute(handle, 『open』, 『 [email protected]?subject=hello&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);
vari: 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相同
delphi中的指標
從最初的 pascal 發展至今 的object pascal 可以說在指標運用上,絲毫不會遜色於 c語言的指標。以下內容分為八個部分,分別是 一 型別指標的定義 二 無型別指標的定義 三 指標的解除引用 四 取位址 指標賦值 五 指標運算 六 動態記憶體分配 七 字元陣列的運算 八 函式指標 對於...
delphi中的指標
從最初的 pascal 發展至今 的object pascal 可以說在指標運用上,絲毫不會遜色於 c語言的指標。以下內容分為八個部分,分別是 一 型別指標的定義 二 無型別指標的定義 三 指標的解除引用 四 取位址 指標賦值 五 指標運算 六 動態記憶體分配 七 字元陣列的運算 八 函式指標 對於...
Delphi中ShellExecute的妙用
shellexecute的功能是執行乙個外部程式 或者是開啟乙個已註冊的檔案 開啟乙個目錄 列印乙個檔案等等 並對外部程式有一定的控制。有幾個api函式都可以實現這些功能,但是在大多數情況下shellexecute是更多的被使用的,同時它並不是太複雜。下面舉例說明它的用法。開啟記事本,並開啟乙個檔案...