Delphi調用外部程序詳解

Delphi調用外部程序詳解(Shellexecute,Winexec)
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;  
  ●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’, nil, nil, SW_SHOWNORMAL);  
  格式二:http://網站域名/網頁文件名。  
  如:ShellExecute(handle, ‘open’, http:// ;  www.neu.edu.cn/default.htm’,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);打開新郵件窗口。  
  格式二:mailto:用戶帳號@郵件服務器地址  
  如:ShellExecute(handle, ‘open’,‘ mailto:who@mail.neu.edu.cn’, nil, nil, SW_SHOWNORMAL);打開新郵件窗口,並自動填入收件人地址。若指定多個收件人地址,則收件人地址之間必須用分號或逗號分隔開(下同)。  
  格式三:mailto:用戶帳號@郵件服務器地址?subject=郵件主題&body=郵件正文  
  如:ShellExecute(handle, ‘open’, ‘ mailto:who@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相同

轉自 百度文庫
相關文章
相關標籤/搜索