Что нового

Надежный перезапуск скрипта

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
AutoIt: 3.3.0.0
Версия: 1.0

Категория: Процессы

Описание: "Аккуратно" перезапускает скрипт (AU3 или EXE) с сохранением параметров командной строки. Библиотека состоит всего из одной функции - _ScriptRestart(), но для удобства использования необходимо было оформить ее как отдельный UDF. Функция может быть вызвана в любой момент и после завершения скрипта будет инициирована его перезагрузка. Также учитывается возможность использования методов для блокировки повторного запуска программы (см. пример - _Singleton()). Важно отметить, что библиотека использует функцию OnAutoItStart().

Пример:
Код:
#NoTrayIcon

#Include <Misc.au3>
#Include <Restart.au3>

_Singleton('MyProgram')

If MsgBox(36, 'Restarting...', 'Press OK to restart this script.') = 6 Then
	_ScriptRestart()
EndIf

Источник: Restart UDF (оффициальный форум)
Автор(ы): Yashied
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
Re: Перезапуск скрипта

Забавный метод с ConsoleRead. Но мне всё таки кажется что надёжнее было бы отслеживать завершение процесса до запуска.

Кстати, а разве не лучше проверять так:

Код:
If @extended Then
		While ProcessExists($Pid)
			Sleep(100)
		WEnd
	EndIf


?

и параметры ком. строки можно через $CmdLineRaw, которая может содержать все параметры в отличии от массива $CmdLine.

и условие с SingleTon (в примере) в данном случае тоже лишнее, достаточно просто так написать:

Код:
_Singleton('MyProgram')


:whistle:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Re: Перезапуск скрипта

:smile:

OK, поправил. _Singleton()-ом в своих программах почти не пользовался. Позже покажу свой метод предотвращения повторного запуска скрипта.

CreatoR сказал(а):
Но мне всё таки кажется что надёжнее было бы отслеживать завершение процесса до запуска.
Согласен, но не представляю как это сделать. Вот этот пример довольно "стремный" и не совсем универсальный. А эта функция работает как часы (швейцарские).


Добавлено:
Сообщение автоматически объединено:

Крик души:
Вот так всегда, изучаешь и работаешь со "сложным" материалом, а про простые вещи даже и не вспоминаешь.

:smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
Re: Перезапуск скрипта

Yashied [?]
не представляю как это сделать. Вот этот пример довольно "стремный" и не совсем универсальный.
Из за WMI? а как тебе тогда идея с созданием дополнительного скрипта au3? (всё тоже самое но вместо vbs используем au3, а в качестве интерпритатора используем @AutoItExe).

Вот так.
 
Верх