Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Запуск двух *.exe из разных папок с установленной программой (http://forum.oszone.net/showthread.php?t=167269)

Fus-Sheva 13-02-2010 21:26 1346466

Запуск двух *.exe из разных папок с установленной программой
 
Подскажите пожалуйста...
В папке с устанавливаемой программой есть еще две папки в обеих лежат по одному *.exe файлу.
Как вызвать из главного окна формы тот или иной *.exe файл понятно, к примеру так:
Код:

//Запускаем исполняемый файл из Папки 1
ShellExecute(handle,'open','C:\Program Files\Папка с установленной программой\Папка1\Start1.exe',nil,nil,SW_SHOW);
//Запускаем исполняемый файл из Папки 2
ShellExecute(handle,'open','C:\Program Files\Папка с установленной программой\Папка2\Start2.exe',nil,nil,SW_SHOW);

Мы жестко прописываем путь к тому или иному *.exe файлу . А если человек установит программу в другую папку, диск. Как быть в этом случае?
По ходу, объединять в одну папку эти *.exe файлы не нужно.

crashtuak 13-02-2010 21:46 1346481

Fus-Sheva, тут все зависит от того, каким образом нужно указать путь к exe - если можно указать вручную, то, например, можно создать ini файл с путями к exe, вручную его править, и грузить путь уже с ini. А можно просто по время исполнения программы запросит ввод путей к exe. Но если нужно найти требуемые exe автоматически, где бы они не находились, то тут мороки уже намного больше. Опишите более подробно задачу и требуемые результаты.

Fus-Sheva 13-02-2010 22:08 1346500

К примеру, человек устанавливает программу "PROGA". Инсталятор ложит ее по умолчанию в папку с таким путем:
C:\Program Files\PROGA

Но человеку хочется установить эту программу в папку с таким путем D:\Games\PROGA (инсталятор позволяет изменить папку назначения). А вот в папке "PROGA" есть еще две папки, скажем Part1 и Part2

При запуске программы из папки "PROGA" Start.exe открывается форма на которой установлено две кнопки Part1 и Part1 при нажатии на одну из них должен запускаться исполняемый файл либо из папки Part1 (Start1.exe) либо из папки Part2 (Start2.exe)

Так понятней?

Admiral 13-02-2010 22:11 1346502

Fus-Sheva можно определить папку приложения с помощью функции GetModuleFileName(). А к полученному пути поочередно прибавить (например с помощью функций работы со строками) требуемые относительные, Папка1\Start1.exe и Папка2\Start2.exe.

Fus-Sheva 13-02-2010 22:13 1346505

Спасибо попробуем.

Fus-Sheva 15-02-2010 21:54 1347999

Сделал следующим образом.
Пример:
Путь к папке с установленной программой: C:\Program Files\PROGA
Пути к файлам *.exe
C:\Program Files\PROGA\Start.exe
C:\Program Files\PROGA\Part1\Start1.exe
C:\Program Files\PROGA\Part2\Start2.exe

Потом примерно так:
Код:

//объявляем строковые переменные
 Var Path: String; 
 Var Part1: String; 
 Var Part2: String;
 
//Действие по "Кнопка-1"
 procedure TForm1.Button1Click(Sender: TObject); 
begin
 Path:=Application.ExeName; // получаем путь к Start.exe
 Path:=ExtractFileDir(Path);  // обрезаем название и расширение (Start.exe)
 Part1:='\Part1\Start1.exe'; // присваиваем (прописываем) путь к Start1.exe в первой папке Part1
ShellExecute(handle,'open', PChar(Path + Part1), nil,nil,SW_SHOW);  //  к обрезанному пути Path дописываем путь к первой папке (Part1) и файлу Strat1.exe
end;

// Тоже самое делаем с "Кнопка-2"
 procedure TForm1.Button2Click(Sender: TObject);
begin
 Path:=Application.ExeName;
 Path:=ExtractFileDir(Path); 
 Part2:='\Part2\Start2.exe';
ShellExecute(handle,'open', PChar(Path + Part2), nil,nil,SW_SHOW);
end;



Время: 17:09.

Время: 17:09.
© OSzone.net 2001-