Как заставить запускаться из определенной папки?

Материал из DRKB


Приведенный пример кода проверяет из какой папки запущена программа, если она запущена не из корневой - то переносит себя в корень и запускается оттуда.

program Project1;

uses
  Forms, classes, windows, Sysutils, ShellApi,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

var
  f: TextFile;
  FileName: string;

begin
  if ParamStr(1) <> '/runasis' then
  begin
    CopyFile(PChar(ParamStr(0)), PChar('c:\' + ExtractFilename(ParamStr(0))), True);
    ShellExecute(0, 'Open', PChar(ExtractFilename(ParamStr(0))), '/runasis', 'c:\', sw_restore);
    FileName := ChangeFileExt(ParamStr(0), '.bat');
    AssignFile(f, FileName);
    Rewrite(f);
    WriteLn(f, ':1');
    WriteLn(f, Format('Erase "%s"', [ParamStr(0)]));
    WriteLn(f, Format('If exist "%s" Goto 1', [ParamStr(0)]));
    WriteLn(f, Format('Erase "%s"', [FileName]));
    CloseFile(f);
    ShellExecute(0, 'Open', PChar(FileName), nil, nil, sw_hide);
  end
  else
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.


Author: Vit
Source: Vingrad.ru http://forum.vingrad.ru
ID: 04568