Different ways of executing applications and files from Delphi
There are several ways of executing files and applications from Delphi. All use the ShellAPI unit and either the ShellExecute or ShellExecuteEx API functions.
Example 1
Execute NotePad:
ShellExecute( Application.Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL );
Example 2
Open SomeText.txt in NotePad:
ShellExecute( Application.Handle, 'open', 'c:\windows\notepad.exe', 'c:\SomeText.txt', nil, SW_SHOWNORMAL );
Example 3
Execute a file according to its extension:
ShellExecute( Application.Handle, 'open', 'c:\MyDocuments\Letter.doc', nil, nil, SW_SHOWNORMAL );
Example 4
Open web site or a *.htm file with the default web browser.
ShellExecute( Application.Handle, 'open', 'http://example.com', nil, nil, SW_SHOWNORMAL );
Example 5
Send an e-mail with a subject and a 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( Application.Handle, 'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL ); end;
Example 6
Execute the Windows Calculator and pop up a message when 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); //lpParameters := PChar(ParamString); {ParamString can contain the application parameters.} //lpDirectory := PChar(StartInString); {StartInString specifies the name of the working directory. If ommited, the current directory is used.} 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;
| Author: | Shlomo Abuisak |
|---|---|
| Contributor: | Shlomo Abuisak |
| Added: | 2009-11-05 |
| Last updated: | 2009-11-05 |
