delphi調用外部程序打開文件


delphi調用外部程序打開文件

ShellExecute的各種用法 

一、利用系統默認的郵件收發器發送電子郵件 
Uses 
..., ShellAPI; 

Var 
lpHwnd: HWND; 
lpOperation, lpFile, lpParameters, lpDirectory: String; 
Begin 
lpHwnd:= GetDesktopWindow(); 
lpOperation:= 'open'; 
lpFile:= 'mailto:' + 'Maple119@263.net' + '?' //主郵件地址后以'?'結束 
+ '&cc=' + 'balaba960808@163.com' //抄送 
+ '&bcc=' + 'lyf.kibosoft.com' //暗送 
+ '&subject=' + '主題' 
+ '&body='+ '第一行內容' + '%0d' + '第二行內容' //主題內容以 '%0d' 轉行 
+ '&File=' + 'D:\Help.rtf'; //附件只對 Outlook Express 有效 
lpParameters:= ''; 
lpDirectory:= ''; 
ShellExecute(lpHwnd, pChar(lpOperation), 
pChar(lpFile), pChar(lpParameters), 
pChar(lpDirectory), SW_SHOWNORMAL); 
End; 

二、打開一個網頁 
ShellExecute(0, 'open', 'http://www.google.com', '', '', SW_SHOWNORMAL); 

三、打印文檔 
ShellExecute(0, 'print', 'D:\Help.rtf', '', '', SW_SHOWNORMAL) 

四、利用系統默認的程序打開指定的文件 
ShellExecute(0, 'open', 'D:\Help.rtf', '', '', SW_SHOWNORMAL)) 

五、用指定的程序打開指定的文件 
ShellExecute(0, 'open', 'notepad.exe', 'D:\Help.rtf', '', SW_SHOWNORMAL) 

六、執行快捷方式(.LNK) 
ShellExecute(handle,'open','c:\windows\desktop\aaa.lnk','', '', sw_hide);  

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:// ; 
, 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’,‘ 
, nil, nil, SW_SHOWNORMAL);打開新郵件窗口,並自動填入收件人地址。若指定多個收件人地址,則收件人地址之間必須用分號或逗號分隔開(下同)。 
  格式三:mailto:用戶賬號@郵件服務器地址?subject=郵件主題&body=郵件正文 
  如:ShellExecute(handle, ‘open’, ‘ 
?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相同

 

 

 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM