Saturday, January 4, 2020
Execute and Run Applications and Files From Delphi Code
The Delphi programming language provides a quick way to write, compile, package, and deploy applications cross-platform. Although Delphi creates a graphical user interface, there are bound to be times you want to execute a program from your Delphi code. Lets say you have a database application that uses an external backup utility. The backup utility takes parameters from theà application and archives the data, while your program waits until the backup finishes. Maybe you want to open documents presented in a file list boxà just by double-clicking on themà without opening the associated program first. Imagine a link label in your program that takes the user to your home page. What do you say about sending an email directly from your Delphi application through the default Windows email client program? ShellExecute To launch an application or execute a file in a Win32 environment, use the ShellExecute Windows API function. Check out the help on ShellExecute for aà full description of parameters and error codes returned. You can open any document without knowing which program is associated with itââ¬âthe link is defined in the Windows Registry. Here are some shell examples.à 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) ; Heres how to find an application associated with an extension. Open a Website or a *.htm File With the Default Web Explorer ShellExecute(Handle, open,http://delphi.about.com,nil,nil, SW_SHOWNORMAL) ; Send an Email 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:delphiaboutguide.com?subject em_subject body em_body ; ShellExecute(Handle,open, PChar(em_mail), nil, nil, SW_SHOWNORMAL) ;end; Heres how to send an email with the attachment. Execute a Program and Wait Until It Finishes 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 theapplication parameters.}// lpParameters : PChar(ParamString) ;{StartInString specifies thename 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;
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.