|
|
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
Как сделать так, чтобы при определенных случаях программа сама себя перезапускала, т.е. скажем возник сбой, или нужно перезапустить прогу с новыми настройками, тока это нужно чтобы в самой проге была, программа сама себя перезапускает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 07:25 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
Как вы себе это представляете? Программа закрыла себя, а потом? Для этого нужна еще одна маленькая программулинка, которая будет получать команду, по которой закрывает и запускает снова первую программу. Батник тоже сойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 09:55 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
нет не такими методами, а другими не знаю как, вот поэтому и спрашиваю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 11:06 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
автор...чтобы при определенных случаях программа сама себя перезапускала, т.е. скажем возник сбой... К примеру Винда выдает что приложение выполнило недопустимую операцию и будет закрыто и жутко матерясь предлагает отправить отчет Микрософту. Ты о таких случаях? Гм... Можно выполнять определенный код в чужом процессе, но это опять же будет как бы вторая прожка, следящая за первой с одним лишь отличием, что будет невидна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 11:20 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
AndreyMp автор...чтобы при определенных случаях программа сама себя перезапускала, т.е. скажем возник сбой... К примеру Винда выдает что приложение выполнило недопустимую операцию и будет закрыто и жутко матерясь предлагает отправить отчет Микрософту. Ты о таких случаях? Гм... Можно выполнять определенный код в чужом процессе, но это опять же будет как бы вторая прожка, следящая за первой с одним лишь отличием, что будет невидна. необязтально в этом случае, скажем настройки поменялись, прога закрывается, скажем, как вариант (но не знаю реализуемо ли это), при этом в памяти должен быть код, который следит за тем, что как только прога выгружается из памяти, автоматически запускает ее обратно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 12:52 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
или сделать так чтоли, прога перед выходом создает скрипт vbs, который посредством WMI следит за списком процессов, когда из списка исчезает наше приложение, через n-секунд обратно запускает ее, и выходит, а прога когда запускается проверят во временной папке (%temp%), список скриптов, если среди них есть наш скрипт удаляет его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 12:55 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 13:04 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
Между прочим, многие проги реализуют этот алгоритм... Только все разработчики по-разному. Для тебя могу посоветовать следующее (дабы не лезть в дебри системных библиотек :) (Условие - на машине должно быть разрешено использование WSH) Итак, прога обнаружила, что ей надо перезапуститься. - создаем файл *.vbs (*.js), его назначение только одно - следить за закрытием нашей проги, (в этом случае он запускает ее заново и завершается) - запускаем этот файл через wscript.exe - выходим из программы - запущенный скрипт обнаруживает закрытие и запускает нас заново (при этом завершаясь сам) Скрипт я тебе уже давал тут WBR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 20:17 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
AndreTMМежду прочим, многие проги реализуют этот алгоритм... Только все разработчики по-разному. Для тебя могу посоветовать следующее (дабы не лезть в дебри системных библиотек :) (Условие - на машине должно быть разрешено использование WSH) Итак, прога обнаружила, что ей надо перезапуститься. - создаем файл *.vbs (*.js), его назначение только одно - следить за закрытием нашей проги, (в этом случае он запускает ее заново и завершается) - запускаем этот файл через wscript.exe - выходим из программы - запущенный скрипт обнаруживает закрытие и запускает нас заново (при этом завершаясь сам) Скрипт я тебе уже давал тут WBR извиняюсь, если сказал что не так, или обидил кого ну все условия понятное дело, и AndreTMМежду прочим, многие проги реализуют этот алгоритм... Только все разработчики Итак, прога обнаружила, что ей надо перезапуститься. - создаем файл *.vbs (*.js), его назначение только одно - следить за закрытием нашей проги, (в этом случае он запускает ее заново и завершается) - запускаем этот файл через wscript.exe - выходим из программы - запущенный скрипт обнаруживает закрытие и запускает нас заново (при этом завершаясь сам) про это я уже говорил и AndreTM Скрипт я тебе уже давал тут скрипт мне никто не давал, а в данном посте тут еще вопрос кто кому совет давал ну а по теме, значит кроме метода запуска скрипта, или батника, короче варианта внешней проги кажись не будет, всем спасибо, пост закрыт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 06:30 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
Не, внешняя прога не обязательна... Например так: (извиняюсь, под руками только VFP :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Думаю, переведете сами, и обработчики исключений тоже добавите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 18:59 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
В смысле уже вовремя работы проги, если возникает необходимость перезапуска, то она запускает вторую копию, затем выходит? ...мммм....Хотя... тоже верно можно и так скажем, прога запустилась, НО после запуска перед инициализацией всех объектов проги, проверяет наличие НЕКОТОРОГО флага №1, который появляется при в случае перезапуска программы, если такой флаг есть, прога должна установить флаг №2. Рассмотрим на примере лучше, 1. Прога работает 2. Возникла необходимость перезапуска 3. Устанавливает флаг №1 4. Запускает вторую копию самой же себя 5. Вторая копия запускается 6. В случае если обнаружен флаг №1, то устанавливает флаг №2 и ждет до тех пор пока, флаг №1 не исчезнет 7. а прога которая запустила копию, после запуска самой же себя, ждет появления флага №2, и тоько как он появится удаляет флаг №1 и выходит 8. а копия как только обнаруживает что флаг №1 удален, удаляет флаг №2 и работает дальше, скажем с новыми настройками сойдет? если да, то что же использовать в качестве флагов? использование файлов, реестра не сойдет, вот было же семафоры, так как я не силен в области системного программирования, и плохо знаю все премудрости API, не знаю можно ли использовать это? или есть какой то аналог так еще вроде была функция WaitForSingleObject... короче обсуждаем дальше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 09:59 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
orunbekВ смысле уже вовремя работы проги, если возникает необходимость перезапуска, то она запускает вторую копию, затем выходит? ...мммм....Хотя... тоже верно можно и так скажем, прога запустилась, НО после запуска перед инициализацией всех объектов проги, проверяет наличие НЕКОТОРОГО флага №1, который появляется при в случае перезапуска программы, если такой флаг есть, прога должна установить флаг №2. Рассмотрим на примере лучше, 1. Прога работает 2. Возникла необходимость перезапуска 3. Устанавливает флаг №1 4. Запускает вторую копию самой же себя 5. Вторая копия запускается 6. В случае если обнаружен флаг №1, то устанавливает флаг №2 и ждет до тех пор пока, флаг №1 не исчезнет 7. а прога которая запустила копию, после запуска самой же себя, ждет появления флага №2, и тоько как он появится удаляет флаг №1 и выходит 8. а копия как только обнаруживает что флаг №1 удален, удаляет флаг №2 и работает дальше, скажем с новыми настройками сойдет? если да, то что же использовать в качестве флагов? использование файлов, реестра не сойдет, вот было же семафоры, так как я не силен в области системного программирования, и плохо знаю все премудрости API, не знаю можно ли использовать это? или есть какой то аналог так еще вроде была функция WaitForSingleObject... короче обсуждаем дальше... Ответ находится тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2006, 11:19 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
В теории: маленькая прожка запускает приложение и вешает соответствующий флаг в созданной ею-же переменной окружения - мол работает, а сама всё время справляется у виндов, работает ли приложение. Приложение штатно завершаясь меняет переменную окружения на "не работаю" и, видя такой поворот событий, прожка с миром успокаивается. Если же приложение скоропостижно скончалось, то не успело изменить флаг, и управляющая прожка не найдя процесса приложения при флаге "работаю", запустит приложение повторно. Всё хорошо, только как создать свою переменную окружения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 08:04 |
|
||
|
Как сделать презапуск программы
|
|||
|---|---|---|---|
|
#18+
можете использовать семафоры Проблема повторного запуска приложений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34169141&tid=2164820]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
151ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 451ms |

| 0 / 0 |
