Spuštění externí aplikace pomocí ShellExecute
Rubrika: Delphi
Pokud potřebuje spustit nějaký jiný externí program? Pomůže vám následující procedura. Základem této procedury je volání příkazu ShellExecute.
Pro volání funkce ShellExecute budete nejprve potřebovat přidat mezi použité unity ve stati USES unitu ShellAPI. Vlastní procedura pro spuštění externího programu pak může vypadat třeba následujícím způsobem:
function TFormMainExecApp.ExecApp(const FileName, Params, DefaultDir: string; ShowCmd: Integer): THandle;
var
zFileName, zParams, zDir: array[0..250] of Char;
begin
// clear arrays
FillChar(zFileName,251,#0);
FillChar(zParams,251,#0);
FillChar(zDir,251,#0);
// convert strring na PCHar
StrPCopy(zFileName, FileName);
StrPCopy(zParams, Params);
StrPCopy(zDir, DefaultDir);
// call ShellExecute
Result := ShellExecute(Application.MainForm.Handle, nil, zFileName, zParams, zDir, ShowCmd);
end;
Ve vlastní aplikaci pak můžete např. na stisk tlačítka spustit Kalkulačku následujícím způsobem:
procedure TFormMainExecApp.Button1Click(Sender: TObject);
begin
ExecApp('calc.exe','','',SW_SHOWNORMAL);
end;
Můžete také otevírat soubor jejichž přípona je asociovaná s nějakým programem. Pro příklad můžeme otevřít např. pomocí MsWordu RTF soubor.
procedure TFormMainExecApp.Button2Click(Sender: TObject);
begin
ExecApp('popis.rtf','','',SW_SHOWNORMAL);
end;
V tomto příkladu použitá hodnota SW_SHOWNORMAL, která je definovaná v unitu Windows a reprezentuje celočíselnou hodnotu 1. Mimo této konstanty můžete použít i některou z následujících:
- SW_HIDE = 0;
- SW_SHOWNORMAL = 1;
- SW_NORMAL = 1;
- SW_SHOWMINIMIZED = 2;
- SW_SHOWMAXIMIZED = 3;
- SW_MAXIMIZE = 3;
- SW_SHOWNOACTIVATE = 4;
- SW_SHOW = 5;
- SW_MINIMIZE = 6;
- SW_SHOWMINNOACTIVE = 7;
- SW_SHOWNA = 8;
- SW_RESTORE = 9;
- SW_SHOWDEFAULT = 10;
- SW_MAX = 10;
Úplné zdrojové soubory si můžete stáhnout na adrese http://www.provaz.cz/download_id.php?id=57
Datum vydání: 23.04.2008 | Zobrazeno: 19572
Permanentní odkaz: Spuštění externí aplikace pomocí ShellExecute
Autor:Tom