当前位置 - 股票行情交易網 - 國際漫評 - ShellExecuteA怎麽用?

ShellExecuteA怎麽用?

有三個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消息窗口的父窗口。例如,可以將其設置為應用程序主窗口

句柄,即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參數設置為“’, nil, nil, SW_SHOWNORMAL);

格式二:/default.htm’,nil,nil,SW_SHOWNORMAL);

如果將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’,‘ mailtwho@mail.neu.edu.cn’, nil, nil, SW_SHOWNORMAL);打開新郵件窗口,並自動填入收

件人地址。若指定多個收件人地址,則收件人地址之間必須用分號或逗號分隔開(下同)。

格式三:mailt用戶賬號@郵件服務器地址?subject=郵件主題&body=郵件正文

如:ShellExecute(handle, ‘open’, ‘ mailtwho@mail.neu.edu.cn?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);

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相同