Different ways of executing applications and files from Delphi #134
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', 'https://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 |