Science, Tech, Math › Computer Science Execute and Run Applications and Files From Delphi Code Share Flipboard Email Print Blend Images - DreamPictures/Brand X Pictures/Getty Images Computer Science Delphi Programming Advanced Delphi Tutorials PHP Programming Perl Python Java Programming Javascript Programming C & C++ Programming Ruby Programming Visual Basic View More By Zarko Gajic Zarko Gajic Twitter Computer Science Expert MSCS, Computer Science, University of Osijek Zarko Gajic is experienced in SQL and has working knowledge of DB systems such as MS SQL Server, Firebird, Interbase, and Oracle. He is also proficient in XML, DHTML, and JavaScript. Learn about our Editorial Process Updated on January 19, 2019 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. Let's 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) ; Here's 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: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 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; Cite this Article Format mla apa chicago Your Citation Gajic, Zarko. "Execute and Run Applications and Files From Delphi Code." ThoughtCo, Sep. 8, 2021, thoughtco.com/execute-and-run-applications-1058462. Gajic, Zarko. (2021, September 8). Execute and Run Applications and Files From Delphi Code. Retrieved from https://www.thoughtco.com/execute-and-run-applications-1058462 Gajic, Zarko. "Execute and Run Applications and Files From Delphi Code." ThoughtCo. https://www.thoughtco.com/execute-and-run-applications-1058462 (accessed June 10, 2023). copy citation