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;