![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Самоперезапуск программы [D5, Win95/98, WinME, NT4, Win2k, WinXP]
Oxy © (2002-12-07 15:12:00)Как сделать самоперезапуск программы? То есть что бы она закрылась и запустила сама себя. При этом нельзя допустить одновременной работы двух копий программы.
Oxy (2002-12-09 00:42:00) [1]Thanx...
Devid (2002-12-08 20:31:00) [2]Не надо горевать есть один проверенный мной способ
var Loo : string;
assignfile(любой файл, "c:\auto.bat");
rewrite(любой файл);
loo := application.exename;
writeln(любой файл, loo);
closefile(любой файл);
winexec("c:\auto.bat", sw_show);
release;//освобождает память занятую программой
application.terminate;
Oxy (2002-12-08 20:10:00) [3]Ладно, спасибо за советы.
Жаль что нет какого то встроенного механизма...
Sha (2002-12-08 08:50:00) [4]Программа при старте должна проверять, есть ли второй экземляр.
Если есть, спрашивает у него, что делать дальше. И далее по обстоятельствам.
Такую программу можно запускать хоть сто раз.
Anatoly Podgoretsky (2002-12-07 23:18:00) [5]Через бат и делай, посредником будет командный процессор, получится цепочка: 1, 1+3, 3, 3+2, 2
Где три это бат
LSW (2002-12-07 22:47:00) [6]Создай мьютекс, и при выключении своей проги запускай ее копию которая при старте будет его проверять и если свободно то прога запустится. Делай только таймаут побольше. Сам так не делал, но теоретически возможно.
Oxy (2002-12-07 16:55:00) [7]И как ты это представляешь, после того как она закрылась святой дух это будет делать? Делай с помощью посредника, запусти третью, закройся, она запустит вторую и тоже закроется.
Дык, я потому и спрашиваю, что не знаю какой "святой дух" здесь надо призвать. Может есть в виндах какая то такая возможность? Ведь некоторые программы так делают. Например Quake3 перезапускается при смене мода.
О посреднике я и сам догадался. Оно теперь так и работает.
Мысли вслух: a может как то через батник это можно сделать?
Anatoly Podgoretsky (2002-12-07 16:11:00) [8]Не выполняется условие "одновременной работы". будут какое то время две копии.
PD (2002-12-07 16:08:00) [9]В событии OnDestroy главного окна напиши WinExec (PChar (Application.ExeName), SW_SHOW).
Не забудь постваить какой-нибудь флаг, а то не выключишь
Anatoly Podgoretsky (2002-12-07 15:28:00) [10]И как ты это представляешь, после того как она закрылась святой дух это будет делать?
Делай с помощью посредника, запусти третью, закройся, она запустит вторую и тоже закроется.