打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Executing and Running Applications and Files from Delphi Code

Executing and Running Applications and Files from Delphi Code

From , former About.com Guide

How many times have you wanted to execute some program from your Delphi application?

Let's say we have a database application that uses some external backup utility. The back up utility takes parameters from your application, archives data, while your program waits until backup finishes.

On the other hand, have you ever needed to open documents presented in a file listbox, just by double clicking on them, without opening the associated program first?

Finally, imagine a link-label in your program that will take the user to your home page (by executing the Internet Explorer). Moreover, what do you say about sending an e-mail directly from your Delphi application through default Windows e-mail client program (like MS Outlook Express).

ShellExecute

To launch an application or execute a file in Win32 environment we will use the ShellExecute Windows API function. Check out the help on ShellExecute for full description of parameters and error codes returned.
As you will see we can open any type of document from our program without knowing which program is associated with it (this link is defined in the Windows Registry).

Let's see some shell action!
Be sure to add ShellApi to your Unit's uses clause.


Run Notepad

 uses ShellApi; ... ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL) ; 

Open SomeText.txt with Notepad

 ShellExecute(Handle,'open', 'c:\windows\notepad.exe','c:\SomeText.txt', nil, SW_SHOWNORMAL) ; 

Display the contents of the "DelphiDownload" folder

 ShellExecute(Handle,'open', 'c:\DelphiDownload', nil, nil, SW_SHOWNORMAL) ; 

Execute a file according to its extension.

 ShellExecute(Handle, 'open', 'c:\MyDocuments\Letter.doc',nil,nil,SW_SHOWNORMAL) ; 
Here's how to Find an application associated with an extension

Open web site or a *.htm file with the default web explorer

 ShellExecute(Handle, 'open', 'http://delphi.about.com',nil,nil, SW_SHOWNORMAL) ; 
Here's how to Open a Web Browser in a new window

Send an e-mail with the subject and the message body

 var em_subject, em_body, em_mail : string; begin   em_subject := 'This is the subject line';   em_body := 'Message body text goes here';    em_mail := 'mailto:delphi@aboutguide.com?subject=' +     em_subject + '&body=' + em_body ;    ShellExecute(Handle,'open',     PChar(em_mail), nil, nil, SW_SHOWNORMAL) ; end; 
Here's how to send an email with the attachment

Execute a program and wait until it has finished. The following example uses the ShellExecuteEx API function.

 // Execute the Windows Calculator and pop up // a message when the Calc is terminated. uses ShellApi; ... var    SEInfo: TShellExecuteInfo;    ExitCode: DWORD;    ExecuteFile, ParamString, StartInString: string; begin    ExecuteFile:='c:\Windows\Calc.exe';     FillChar(SEInfo, SizeOf(SEInfo), 0) ;    SEInfo.cbSize := SizeOf(TShellExecuteInfo) ;    with SEInfo do begin      fMask := SEE_MASK_NOCLOSEPROCESS;      Wnd := Application.Handle;      lpFile := PChar(ExecuteFile) ; { ParamString can contain the application parameters. } // lpParameters := PChar(ParamString) ; { StartInString specifies the name of the working directory. If ommited, the current directory is used. } // lpDirectory := PChar(StartInString) ;      nShow := SW_SHOWNORMAL;    end;    if ShellExecuteEx(@SEInfo) then begin      repeat        Application.ProcessMessages;        GetExitCodeProcess(SEInfo.hProcess, ExitCode) ;      until (ExitCode <> STILL_ACTIVE) or 	 Application.Terminated;      ShowMessage('Calculator terminated') ;    end    else ShowMessage('Error starting Calc!') ; end; 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Delphi Unigui 拨打电话
Delphi执行CMD命令
Delphi打开网址链接的四种方法
WinExec(exePath,sw
ShellExecute 打开外部程序或文件
ShellExecute的各種用法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服