Toepassingen en bestanden uitvoeren en uitvoeren vanuit Delphi Code

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?

ShellExecute

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. 

Voer Kladblok uit

gebruikt ShellApi;
...
ShellExecute (handvat, 'open',
'c: \ Windows \ notepad.exe', nul, nul, SW_SHOWNORMAL);

Open SomeText.txt met Kladblok

ShellExecute (Handle, 'open',
'C: \ windows \ notepad.exe',
'c: \ SomeText.txt', nihil, SW_SHOWNORMAL);

Toon de inhoud van de map "DelphiDownload"

ShellExecute (Handle, 'open',
'c: \ DelphiDownload', nul, nul, SW_SHOWNORMAL);

Voer een bestand uit volgens de extensie

ShellExecute (handvat, 'open',
'c: \ MyDocuments \ Letter.doc', nihil, nihil, SW_SHOWNORMAL);

U kunt als volgt een toepassing vinden die aan een extensie is gekoppeld.

Open een website of een * .htm-bestand met de standaardwebverkenner

ShellExecute (handvat, 'open',
'http: //delphi.about.com',nil,nil, SW_SHOWNORMAL);

Stuur een e-mail met het onderwerp en de berichttekst

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.

Voer een programma uit en wacht tot het klaar is

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;