Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перезапуск программы


Alexandr ©   (2006-04-13 11:05:00) 

А как делается чтоб из программы нажать кнопку, и программа закрылась, выполнились какие-то действия (например обновился экзешник из шары) и опять программа запустилась сама?
Поделитесь кодом, или скажите где глянуть


0bsid   (2006-04-13 11:41:00) [1]


> Alexandr ©   (13.04.06 11:14) [2]
> так, а как разрешить противоречие, что на момент запуска
> батника, программа должна быть уже закрыта?
> Т.е. вот в коде запустили батник, и надо успеть самозакрыться,
>  чтоб батник не споткнулся на том, что программа еще не
> закрыта.

запуск bat, сразу halt, а в батнике цикл на удаление своей программы
батник генерируй по разному, если нужно обратиться к ехе файлу - то делай цикл на успешное удаление, если не нужно - просто копируй поверх что надо обновить. bat удаляется сразу же после запуска твоей проги
я делал так
хотя идея с dll мне в голову не пришла, в следующий раз попробую


Сергей М.   (2006-04-13 11:24:00) [2]

Самое простое - реализовать некую MyUpdate.DLL, которая будет заниматься обновлениями.

Перед завершением твоя программа выполняет ком.строку вида :

rundll32 MyUpdate.DLL SomeUpdateProcName, PID, параметры_обновления

где

SomeUpdateProcName - имя некоей экспортируемой процедуры в составе этой DLL, занимающаяся обновлениями;

PID - идентификатор текущего процесса (процесса приложения, исп.файл которого требуется обновить) в текстовом виде

параметры_обновления - один или более (через запятую) текстовых параметров, которые получит вызываемая процедура SomeUpdateProcName, и которые указывают, что ей откуда взять, куда положить, что стереть/переименовать и т.д. и т.п.

Процедура SomeUpdateProcName при этом должна иметь прототип вида:

procedure SomeUpdateProcName(PID: PChar; Param1 [,Param2, Param3, ...]: PChar); stdcall;

Как только SomeUpdateProcName будет вызвана и получит управление, она ожидает завершение процесса, PID которого передан ей 1-м параметром, и выполняет предусмотренные действия по обновлению с учетом параметров, следующих за PID.


Anatoly Podgoretsky   (2006-04-13 11:17:00) [3]

Противоречия нет, на момент запуска программа не должна быть закрыта.
Остальное в справочнике по командам ДОС


Alexandr   (2006-04-13 11:14:00) [4]

так, а как разрешить противоречие, что на момент запуска батника, программа должна быть уже закрыта?
Т.е. вот в коде запустили батник, и надо успеть самозакрыться, чтоб батник не споткнулся на том, что программа еще не закрыта.


0bsid   (2006-04-13 11:11:00) [5]

проще всего при помощи генерации .bat файла


Наверх

Титульная страница Поиск, карта сайта Написать письмо