De programmeertaal Delphi biedt een snelle manier om applicaties platformoverschrijdend te schrijven, compileren, verpakken en implementeren. Hoewel Delphi een grafische gebruikersinterface maakt, zijn er tijden dat u een programma wilt uitvoeren vanuit uw Delphi-code. Stel dat u een database-applicatie hebt die een extern back-upprogramma gebruikt. Het back-uphulpprogramma neemt parameters uit de toepassing en archiveert de gegevens, terwijl uw programma wacht totdat de back-up is voltooid.
Misschien wilt u documenten in een bestandslijst openen door erop te dubbelklikken zonder eerst het bijbehorende programma te openen. Stel je een linklabel voor in je programma dat de gebruiker naar je startpagina brengt. Wat zegt u over het rechtstreeks vanuit uw Delphi-toepassing verzenden van een e-mail via het standaard Windows e-mailclientprogramma?
Gebruik de ShellExecute Windows API-functie om een toepassing te starten of een bestand uit te voeren in een Win32-omgeving. Bekijk de help op ShellExecute voor een volledige beschrijving van de geretourneerde parameters en foutcodes. U kunt elk document openen zonder te weten welk programma eraan is gekoppeld - de koppeling is gedefinieerd in het Windows-register.
Hier zijn enkele shell-voorbeelden.
gebruikt ShellApi;
...
ShellExecute (handvat, 'open',
'c: \ Windows \ notepad.exe', nul, nul, SW_SHOWNORMAL);
ShellExecute (Handle, 'open',
'C: \ windows \ notepad.exe',
'c: \ SomeText.txt', nihil, SW_SHOWNORMAL);
ShellExecute (Handle, 'open',
'c: \ DelphiDownload', nul, nul, SW_SHOWNORMAL);
ShellExecute (handvat, 'open',
'c: \ MyDocuments \ Letter.doc', nihil, nihil, SW_SHOWNORMAL);
U kunt als volgt een toepassing vinden die aan een extensie is gekoppeld.
ShellExecute (handvat, 'open',
'http: //delphi.about.com',nil,nil, SW_SHOWNORMAL);
var em_subject, em_body, em_mail: string;
beginnen
em_subject: = 'Dit is de onderwerpregel';
em_body: = 'Hoofdtekst van bericht komt hier';
em_mail: = 'mailto: [email protected]? subject =' +
em_subject + '& body =' + em_body;
ShellExecute (Handle, 'open',
PChar (em_mail), nul, nul, SW_SHOWNORMAL);
einde;
U kunt als volgt een e-mail met de bijlage verzenden.
In het volgende voorbeeld wordt de ShellExecuteEx API-functie gebruikt.
// Voer de Windows Calculator uit en pop-up
// een bericht wanneer de Calc wordt beëindigd.
gebruikt ShellApi;
...
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
beginnen
ExecuteFile: = 'c: \ Windows \ Calc.exe';
FillChar (SEInfo, SizeOf (SEInfo), 0);
SEInfo.cbSize: = SizeOf (TShellExecuteInfo);
met SEInfo beginnen
fMask: = SEE_MASK_NOCLOSEPROCESS;
Wnd: = Application.Handle;
lpFile: = PChar (ExecuteFile);
ParamString kan de
applicatieparameters.
// lpParameters: = PChar (ParamString);
StartInString specificeert de
naam van de werkmap.
Indien weggelaten, wordt de huidige map gebruikt.
// lpDirectory: = PChar (StartInString);
nShow: = SW_SHOWNORMAL;
einde;
als ShellExecuteEx (@SEInfo) begin dan
herhaling
Application.ProcessMessages;
GetExitCodeProcess (SEInfo.hProcess, ExitCode);
tot (ExitCode STILL_ACTIVE) of
Application.Terminated;
ShowMessage ('Calculator beëindigd');
einde
anders ShowMessage ('Fout bij starten van Calc!');
einde;