Il linguaggio di programmazione Delphi offre un modo rapido per scrivere, compilare, impacchettare e distribuire applicazioni multipiattaforma. Sebbene Delphi crei un'interfaccia utente grafica, ci sono molte volte in cui desideri eseguire un programma dal tuo codice Delphi. Supponiamo che tu abbia un'applicazione di database che utilizza un'utilità di backup esterna. L'utilità di backup prende i parametri dall'applicazione e archivia i dati, mentre il programma attende fino al termine del backup.
Forse vuoi aprire i documenti presentati in una casella di riepilogo file semplicemente facendo doppio clic su di essi senza aprire prima il programma associato. Immagina un'etichetta di collegamento nel tuo programma che porti l'utente alla tua home page. Cosa ne pensi di inviare un'e-mail direttamente dall'applicazione Delphi tramite il programma client di posta elettronica Windows predefinito?
Per avviare un'applicazione o eseguire un file in un ambiente Win32, utilizzare la funzione API Windows ShellExecute. Consulta la guida su ShellExecute per una descrizione completa dei parametri e dei codici di errore restituiti. Puoi aprire qualsiasi documento senza sapere a quale programma è associato, il collegamento è definito nel registro di Windows.
Ecco alcuni esempi di shell.
usa ShellApi;
...
ShellExecute (Handle, 'open',
'c: \ Windows \ notepad.exe', zero, nil, SW_SHOWNORMAL);
ShellExecute (maniglia, 'aperto',
'C: \ windows \ notepad.exe',
'c: \ SomeText.txt', zero, SW_SHOWNORMAL);
ShellExecute (maniglia, 'aperto',
'c: \ DelphiDownload', zero, nil, SW_SHOWNORMAL);
ShellExecute (Handle, 'open',
"c: \ MyDocuments \ Letter.doc", zero, nil, SW_SHOWNORMAL);
Ecco come trovare un'applicazione associata a un'estensione.
ShellExecute (Handle, 'open',
'http: //delphi.about.com',nil,nil, SW_SHOWNORMAL);
var em_subject, em_body, em_mail: string;
inizio
em_subject: = 'Questa è la riga dell'oggetto';
em_body: = 'Il testo del corpo del messaggio va qui';
em_mail: = 'mailto: [email protected]? subject =' +
em_subject + '& body =' + em_body;
ShellExecute (maniglia, 'aperto',
PChar (em_mail), zero, zero, SW_SHOWNORMAL);
fine;
Ecco come inviare un'e-mail con l'allegato.
L'esempio seguente utilizza la funzione API ShellExecuteEx.
// Esegui il calcolatore di Windows e pop-up
// un messaggio quando Calc è terminato.
usa ShellApi;
...
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
inizio
ExecuteFile: = 'c: \ Windows \ Calc.exe';
FillChar (SEInfo, SizeOf (SEInfo), 0);
SEInfo.cbSize: = SizeOf (TShellExecuteInfo);
con SEInfo iniziano
fMask: = SEE_MASK_NOCLOSEPROCESS;
Wnd: = Application.Handle;
lpFile: = PChar (ExecuteFile);
ParamString può contenere il file
parametri dell'applicazione.
// lpParameters: = PChar (ParamString);
StartInString specifica il
nome della directory di lavoro.
Se ommited, viene utilizzata la directory corrente.
// lpDirectory: = PChar (StartInString);
nShow: = SW_SHOWNORMAL;
fine;
se ShellExecuteEx (@SEInfo) ha inizio
ripetere
Application.ProcessMessages;
GetExitCodeProcess (SEInfo.hProcess, ExitCode);
fino a (ExitCode STILL_ACTIVE) o
Application.Terminated;
ShowMessage ('Calcolatrice terminata');
fine
else ShowMessage ('Errore durante l'avvio di Calc!');
fine;