powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сделать презапуск программы
16 сообщений из 16, страница 1 из 1
Как сделать презапуск программы
    #34165823
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать так, чтобы при определенных случаях программа сама себя перезапускала,
т.е. скажем возник сбой, или нужно перезапустить прогу с новыми настройками, тока это нужно чтобы в самой проге была, программа сама себя перезапускает
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34166101
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вы себе это представляете? Программа закрыла себя, а потом?
Для этого нужна еще одна маленькая программулинка, которая будет получать команду, по которой закрывает и запускает снова первую программу.
Батник тоже сойдет.
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34166341
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не такими методами, а другими
не знаю как, вот поэтому и спрашиваю
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34166399
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор...чтобы при определенных случаях программа сама себя перезапускала,
т.е. скажем возник сбой...
К примеру Винда выдает что приложение выполнило недопустимую операцию и будет закрыто и жутко матерясь предлагает отправить отчет Микрософту. Ты о таких случаях?
Гм... Можно выполнять определенный код в чужом процессе, но это опять же будет как бы вторая прожка, следящая за первой с одним лишь отличием, что будет невидна.
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34166877
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp автор...чтобы при определенных случаях программа сама себя перезапускала,
т.е. скажем возник сбой...
К примеру Винда выдает что приложение выполнило недопустимую операцию и будет закрыто и жутко матерясь предлагает отправить отчет Микрософту. Ты о таких случаях?
Гм... Можно выполнять определенный код в чужом процессе, но это опять же будет как бы вторая прожка, следящая за первой с одним лишь отличием, что будет невидна.
необязтально в этом случае, скажем настройки поменялись, прога закрывается, скажем, как вариант (но не знаю реализуемо ли это), при этом в памяти должен быть код, который следит за тем, что как только прога выгружается из памяти, автоматически запускает ее обратно
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34166895
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или сделать так чтоли, прога перед выходом создает скрипт vbs, который посредством WMI следит за списком процессов, когда из списка исчезает наше приложение, через n-секунд обратно запускает ее, и выходит, а прога когда запускается проверят во временной папке (%temp%), список скриптов, если среди них есть наш скрипт удаляет его
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34166958
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Private Sub Form_Unload(Cancel As Integer)
 if(StoitSapustitiKopiu) then
  Shell app.Path & "\" & app.EXEName & ".exe"
 end if
End Sub
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34168783
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Между прочим, многие проги реализуют этот алгоритм... Только все разработчики по-разному.
Для тебя могу посоветовать следующее (дабы не лезть в дебри системных библиотек :)

(Условие - на машине должно быть разрешено использование WSH)
Итак, прога обнаружила, что ей надо перезапуститься.
- создаем файл *.vbs (*.js), его назначение только одно - следить за закрытием нашей проги,
(в этом случае он запускает ее заново и завершается)
- запускаем этот файл через wscript.exe
- выходим из программы
- запущенный скрипт обнаруживает закрытие и запускает нас заново (при этом завершаясь сам)

Скрипт я тебе уже давал тут

WBR
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34169141
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMМежду прочим, многие проги реализуют этот алгоритм... Только все разработчики по-разному.
Для тебя могу посоветовать следующее (дабы не лезть в дебри системных библиотек :)

(Условие - на машине должно быть разрешено использование WSH)
Итак, прога обнаружила, что ей надо перезапуститься.
- создаем файл *.vbs (*.js), его назначение только одно - следить за закрытием нашей проги,
(в этом случае он запускает ее заново и завершается)
- запускаем этот файл через wscript.exe
- выходим из программы
- запущенный скрипт обнаруживает закрытие и запускает нас заново (при этом завершаясь сам)

Скрипт я тебе уже давал тут

WBR
извиняюсь, если сказал что не так, или обидил кого
ну все условия понятное дело,
и
AndreTMМежду прочим, многие проги реализуют этот алгоритм... Только все разработчики Итак, прога обнаружила, что ей надо перезапуститься.
- создаем файл *.vbs (*.js), его назначение только одно - следить за закрытием нашей проги,
(в этом случае он запускает ее заново и завершается)
- запускаем этот файл через wscript.exe
- выходим из программы
- запущенный скрипт обнаруживает закрытие и запускает нас заново (при этом завершаясь сам)

про это я уже говорил
и
AndreTM
Скрипт я тебе уже давал тут

скрипт мне никто не давал, а в данном посте тут еще вопрос кто кому совет давал
ну а по теме, значит кроме метода запуска скрипта, или батника, короче варианта внешней проги кажись не будет,
всем спасибо, пост закрыт
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34171628
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, внешняя прога не обязательна...
Например так: (извиняюсь, под руками только VFP :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
* test.prg -> test.exe
set talk off
set safety off
on error retry
Handle=FCreate('Flag')
on error
=FClose(Handle)
*
* бла бла бла
*
if Button.Value= 1  && Выбрали кнопку перезапустить
 Handle=FCreate('Flag')
 run test.exe
 =FClose(Handle)
 quit
endif
*

Думаю, переведете сами, и обработчики исключений тоже добавите...
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34172184
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле уже вовремя работы проги,
если возникает необходимость перезапуска, то она запускает вторую копию, затем выходит?
...мммм....Хотя... тоже верно можно и так
скажем, прога запустилась, НО после запуска перед инициализацией всех объектов проги, проверяет наличие НЕКОТОРОГО флага №1, который появляется при в случае перезапуска программы, если такой флаг есть, прога должна установить флаг №2.
Рассмотрим на примере лучше,
1. Прога работает
2. Возникла необходимость перезапуска
3. Устанавливает флаг №1
4. Запускает вторую копию самой же себя
5. Вторая копия запускается
6. В случае если обнаружен флаг №1, то устанавливает флаг №2 и ждет до тех пор пока, флаг №1 не исчезнет
7. а прога которая запустила копию, после запуска самой же себя, ждет появления флага №2, и тоько как он появится удаляет флаг №1 и выходит
8. а копия как только обнаруживает что флаг №1 удален, удаляет флаг №2 и работает дальше, скажем с новыми настройками

сойдет? если да, то что же использовать в качестве флагов? использование файлов, реестра не сойдет, вот было же семафоры, так как я не силен в области системного программирования, и плохо знаю все премудрости API, не знаю можно ли использовать это? или есть какой то аналог
так еще вроде была функция WaitForSingleObject... короче обсуждаем дальше...
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34172239
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orunbekВ смысле уже вовремя работы проги,
если возникает необходимость перезапуска, то она запускает вторую копию, затем выходит?
...мммм....Хотя... тоже верно можно и так
скажем, прога запустилась, НО после запуска перед инициализацией всех объектов проги, проверяет наличие НЕКОТОРОГО флага №1, который появляется при в случае перезапуска программы, если такой флаг есть, прога должна установить флаг №2.
Рассмотрим на примере лучше,
1. Прога работает
2. Возникла необходимость перезапуска
3. Устанавливает флаг №1
4. Запускает вторую копию самой же себя
5. Вторая копия запускается
6. В случае если обнаружен флаг №1, то устанавливает флаг №2 и ждет до тех пор пока, флаг №1 не исчезнет
7. а прога которая запустила копию, после запуска самой же себя, ждет появления флага №2, и тоько как он появится удаляет флаг №1 и выходит
8. а копия как только обнаруживает что флаг №1 удален, удаляет флаг №2 и работает дальше, скажем с новыми настройками

сойдет? если да, то что же использовать в качестве флагов? использование файлов, реестра не сойдет, вот было же семафоры, так как я не силен в области системного программирования, и плохо знаю все премудрости API, не знаю можно ли использовать это? или есть какой то аналог
так еще вроде была функция WaitForSingleObject... короче обсуждаем дальше...
Ответ находится тут
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34172241
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_mdОтвет находится тут а если быть еще точнее то чуть ниже
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34172808
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SmeL_md SmeL_mdОтвет находится тут а если быть еще точнее то чуть ниже
да согласен
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34195219
Alex_Sandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В теории:
маленькая прожка запускает приложение
и вешает соответствующий флаг в созданной
ею-же переменной окружения - мол работает,
а сама всё время справляется у виндов, работает ли
приложение.
Приложение штатно завершаясь меняет переменную
окружения на "не работаю" и, видя такой поворот событий,
прожка с миром успокаивается.
Если же приложение скоропостижно скончалось, то не успело
изменить флаг, и управляющая прожка не найдя процесса
приложения при флаге "работаю", запустит приложение
повторно.

Всё хорошо, только как создать свою переменную окружения?
...
Рейтинг: 0 / 0
Как сделать презапуск программы
    #34196025
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете использовать семафоры
Проблема повторного запуска приложений
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сделать презапуск программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]