Executați și executați aplicații și fișiere din Codul Delphi

Limbajul de programare Delphi oferă o modalitate rapidă de a scrie, compila, pachet și implementa aplicații multiplă platformă. Deși Delphi creează o interfață grafică cu utilizatorii, există obligații de a executa un program din codul dvs. Delphi. Să zicem că aveți o aplicație de bază de date care folosește o utilitate de rezervă externă. Utilitarul de rezervă preia parametrii din aplicație și arhivează datele, în timp ce programul așteaptă până la finalizarea copiei de rezervă.

Poate doriți să deschideți documentele prezentate într-o casetă de listă de fișiere doar făcând dublu clic pe ele, fără să deschideți mai întâi programul asociat. Imaginați-vă o etichetă de legătură din programul dvs. care îl duce pe utilizator la pagina dvs. de pornire. Ce spuneți despre trimiterea unui e-mail direct din aplicația dvs. Delphi prin programul implicit client de e-mail Windows?

ShellExecute

Pentru a lansa o aplicație sau a executa un fișier într-un mediu Win32, utilizați funcția API ShellExecute Windows. Consultați ajutorul de pe ShellExecute pentru o descriere completă a parametrilor și codurilor de eroare returnate. Puteți deschide orice document fără a ști ce program este asociat cu acesta - link-ul este definit în Registrul Windows.

Iată câteva exemple de coajă. 

Executați blocul de notițe

folosește ShellApi;
...
ShellExecute (mâner, „deschis”,
'c: \ Windows \ notepad.exe', nil, nil, SW_SHOWNORMAL);

Deschideți SomeText.txt cu Notepad

ShellExecute (mâner, 'deschis',
'C: \ windows \ notepad.exe',
'c: \ SomeText.txt', nil, SW_SHOWNORMAL);

Afișează conținutul dosarului "DelphiDownload"

ShellExecute (mâner, 'deschis',
'c: \ DelphiDownload', nil, nil, SW_SHOWNORMAL);

Executați un fișier în funcție de extensia sa

ShellExecute (mâner, „deschis”,
'c: \ MyDocuments \ Letter.doc', nil, nil, SW_SHOWNORMAL);

Iată cum puteți găsi o aplicație asociată cu o extensie.

Deschideți un site web sau un fișier * .htm cu Exploratorul Web implicit

ShellExecute (mâner, „deschis”,
'http: //delphi.about.com',nil,nil, SW_SHOWNORMAL);

Trimiteți un e-mail cu subiectul și corpul de mesaje

var em_subject, em_body, em_mail: string;
începe
em_subject: = 'Aceasta este linia subiectului';
em_body: = 'Textul corpului mesajului merge aici';
em_mail: = 'mailto: [email protected]? subiect =' +
em_subject + '& body =' + em_body;
ShellExecute (mâner, 'deschis',
PChar (em_mail), nil, nil, SW_SHOWNORMAL);
Sfârșit;

Iată cum puteți trimite un e-mail cu atașamentul.

Executați un program și așteptați până se termină

Următorul exemplu utilizează funcția API ShellExecuteEx.

// Execută calculatorul Windows și apare
// un mesaj atunci când Calc este încheiat.
folosește ShellApi;
...
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
începe
ExecuteFile: = 'C: \ Windows \ calc.exe';
FillChar (SEInfo, SizeOf (SEInfo), 0);
SEInfo.cbSize: = SizeOf (TShellExecuteInfo);
cu SEInfo încep
fMask: = SEE_MASK_NOCLOSEPROCESS;
Wnd: = Application.Handle;
lpFile: = PChar (ExecuteFile);

ParamString poate conține
parametrii aplicației.

// lpParameters: = PChar (ParamString);

StartInString specifică
numele directorului de lucru.
Dacă este ommited, se folosește directorul curent.

// lpDirectory: = PChar (StartInString);
nShow: = SW_SHOWNORMAL;
Sfârșit;
dacă ShellExecuteEx (@SEInfo) începe apoi
repeta
Application.ProcessMessages;
GetExitCodeProcess (SEInfo.hProcess, ExitCode);
până la (ExitCode STILL_ACTIVE) sau
Application.Terminated;
ShowMessage („Calculatorul s-a încheiat”);
Sfârșit
else ShowMessage ('Eroare la pornirea Calc!');
Sfârșit;