Executing and Running Applications and Files from Delphi Code
2011-12-17 00:08
501 查看
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).
Let's see some shell action! Be sure to add ShellApito your Unit's uses clause.
Run Notepad
Open SomeText.txt with Notepad
Display the contents of the "DelphiDownload" folder
Execute a file according to its extension.
Here's how to Find an application associated with an extension
Open web site or a *.htm file with the default web explorer
Here's how to Open a Web Browser in a new window
Send an e-mail with the subject and the message body
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.
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:delphi.guide@about.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;
相关文章推荐
- 利用webservice和.net技术上传和下载文件--Sending files in chunks with MTOM Web Services and .NET 2.0 from:http://www.codeproject.com/soap/MTO
- Xcode打包上传报错“ All object files and libraries for bitcode must be generated from Xcode Archive or Ins”
- IOS 打包All object files and libraries for bitcode must be generated from Xcode Archive or Install bui
- Running applications from DelphiTM: Using ShellExecute (Part 1) {转贴}
- Speeding AnsiStrings tricks, and some code [zz from delphi3000]
- All object files and libraries for bitcode must be generated from...
- 通过WebBrowser中的脚本调用Delphi自定义的方法(How to call Delphi code from scripts running in a TWebBrowser)
- IOS 封装上线 All object files and libraries for bitcode must be generated from.
- How to call Delphi code from scripts running in a TWebBrowser
- Cannot run code from this file in conjunction with non encoded files
- Allow your Delphi Forms to Accept Dropped Files from Window Explorer
- Gesture Recognizer code and source files
- leecode 解题总结:106. Construct Binary Tree from Inorder and Postorder Traversal
- How to easily open files and URLs from the command line
- construct-binary-tree-from-inorder-and-postorder-traversal Java code
- CODE 28: Construct Binary Tree from Preorder and Inorder Traversal
- 【转】Drag and Drop files from Windows Explorer toWindows Form
- Using files from web applications
- System Events, Key Code and Keystroke from Doug's AppleScripts
- Running ASP.NET Applications in Debian and Ubuntu using XSP and Mono