• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ExecutingandRunningApplicationsandFilesfromDelphiCode

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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-labelin 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 ShellApito 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:[email protected]?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; 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi-SEH研究发布时间:2022-07-18
下一篇:
Delphi通过IE窗口句柄获取网页接口(IWebBrowser2)good发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap