Cum de a rula orice fișier dintr-un program de pe delphi

Având în vedere în acest articol, codul va ajuta să ruleze cu ușurință orice fișier executabil sau obișnuit direct din aplicația Delphi. În acest exemplu, vom lua în considerare, de asemenea, o modalitate de a începe exe cu transferul fișierului pentru al deschide, și anume, să învețe cum să deschidă alte fișiere folosind orice fel de program.







Pentru un simplu rula un fișier executabil sau orice alt fișier poate fi utilizat nazheprivedennuyu funcția. Este demn de remarcat faptul că, pentru ca aceasta să funcționeze trebuie să vă conectați modulul shellapi.

[Cc lang = 'delphi'] Funcția ExecuteFile (NumeFișier const, Params, DefaultDir: string; ShowCmd: Integer): THandle;
începe
Rezultat: = ShellExecute (Application.MainForm.Handle, nil, PChar (FileName), PChar (Params),
PChar (DefaultDir), ShowCmd);
end; [/ cc]

Un exemplu de utilizare a funcțiilor ExecuteFile:

[Cc lang = 'delphi'] ExecuteFile ( 'myexe.exe', »,», SW_SHOW); // rulați fișierul exe







ExecuteFile ( 'text.txt', »,», SW_SHOW); // începe txt programul implicit [/ cc]

Funcția ExecuteFile vă permite să deschideți nu numai fișierele executabile, dar și orice alte fișiere, cum ar fi text. În acest caz, fișierul se va deschide programul care este atribuit acestui tip de fișier în sistem.

Dar, uneori, pe care doriți să deschideți un anumit program de fișier. Acest lucru ne va ajuta la următorul cod:

[Cc lang = 'delphi'] Procedura OpenFile;
var
linie_cmd, fname: WideStringstring;
si: TStartupInfo;
pi: TProcessInformation;
începe
linie_cmd: = 'c: \ program.exe'; // calea completă la programul pe care vrem să deschidă fișierul
fname: = 'o: \ text.txt'; // calea completă către fișierul

FillChar (si, sizeof (si), # 0);
cu si se incepe
cb: = sizeof (SI);
dwFlags: = STARTF_USESHOWWINDOW;
wShowWindow: = SW_SHOW;
se încheie;

dacă CreateProcessWCreateProcessA (
nil, // lpApplicationName,
pWideCharpChar (linie_cmd + fname) // lpCommandLine,
nil, // lpProcessAttributes,
nil, // lpThreadAttributes,
bInheritHandles Adevărat, //,
0 dwCreationFlags, //
nil, // lpEnvironment,
nil, // lpCurrentDirectory,
si, // lpStartupInfo,
pi), apoi începe // lpProcessInformation
WaitForSingleObject (pi.hProcess, INFINITE);
CloseHandle (pi.hProcess);
se încheie;
se încheie;
[/ Cc]