unit UFileRun2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ActnList, ExtActns, ExtCtrls;

type
  TForm1 = class(TForm)
    ActionList1: TActionList;
    FileRun1: TFileRun;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
    procedure Exec(Oper: string);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses ShellAPI; // Для некоторых констант в TForm1.Exec
{$R *.dfm}
procedure TForm1.Exec(Oper: string);
begin
 FileRun1.Operation := Oper;
 FileRun1.Execute;
 case FileRun1.HInst of
  0: ShowMessage('Не хватает памяти');
  SE_ERR_OOM: ShowMessage('Не хватает памяти завершить операцию');
  ERROR_FILE_NOT_FOUND: ShowMessage('Файл не найден');
  ERROR_PATH_NOT_FOUND:	ShowMessage('Путь не найден');
  ERROR_BAD_FORMAT:	ShowMessage('Ошибочный файл .exe (неправильный формат)');
  SE_ERR_ACCESSDENIED: ShowMessage('Доступ к файлу запрещен');
  SE_ERR_ASSOCINCOMPLETE: ShowMessage(
       'Не полная информация о связанном с файлом приложении');
  SE_ERR_DDEBUSY: ShowMessage('Операция DDE занята другим приложением');
  SE_ERR_DDEFAIL: ShowMessage('Ошибочная операция DDE');
  SE_ERR_DDETIMEOUT: ShowMessage(
                   'Истекло время на выполнение операции DDE');
  SE_ERR_DLLNOTFOUND: ShowMessage(
                                 'Не найдена необходимая DLL');
  SE_ERR_NOASSOC: if Oper = 'print'
                   then ShowMessage(
                        'Попытка печатать непечатаемый файл')
                   else ShowMessage(
                        'Нет приложения, связанного с файлом');
  SE_ERR_SHARE: ShowMessage(
                         'Файл захвачен другим пользователем');
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Exec('open');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Exec('edit');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Exec('print');
end;

end.
