Spuštění externí aplikace pomocí ShellExecute

Klíčová slova: ShellExecute, ExecApp, SW_SHOWNORMAL
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

Autor: Jiří Provazník
Datum vydání: 23.04.2008 | Zobrazeno: 19572
Permanentní odkaz: Spuštění externí aplikace pomocí ShellExecute

Komentáře (1)
Díky presně to jsem potřeboval.
Autor:Tom
Přidej vlastní komentář:
Následující (běžně neviditelná) pole slouží pro vnitřní identifikaci systému. Pokud je vyplníte nebude možné váš požadavek na straně serveru zpracovat:
URL:
contents:
Website:
Pro odeslání vašeho komentáře použijte tlačítko "Odeslat". Toto tlačítko nepoužívejte:

Následující položky je vhodné vyplnit:
Jméno :
Email :
Web :
Místo :
Hodnocení:
Hodnocení jako pomocí hvězdiček
1/5= nejhorší, 5/5=nejlepší