Как настроить запуск/перезапуск скрипта? Topic is solved

Помощь в написании скриптов
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Как настроить запуск/перезапуск скрипта?

16 Apr 2023, 02:02

Здравствуйте!
Есть скрипт - появление MsgBox1 с текстом "Программа запущена". При запуске скрипта Autohotkey должен проверять, был ли он запущен ранее и не закрыт. Если да - выполнять перезапуск, сообщать об этом с помощью другого MsgBox (MsgBox2) и после этого запускать скрипт. Пыталась написать такой скрипт, но он просто перезапускается без появления MsgBox2. Что я делаю не так?

Code: Select all

process, exist, Script.ahk ;проверяет, был ли запущен ранее такой же скрипт
if errorlevel1
	{
	#SingleInstance Force
	MsgBox, 48, Перезапуск, Выполняется перезапуск Script. Программа будет открыта через несколько секунд..., 2 ;это MsgBox2
	MsgBox, 64, Готово, Script запущен!, ;это MsgBox1
	}
else
{
MsgBox, 64, Готово, Script запущен!, ;это MsgBox1
}
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Re: Как настроить запуск/перезапуск скрипта?

16 Apr 2023, 10:09

#SingleInstance есть у меня в скрипте. Только это не особо помогло. Теперь скрипт перезапускается без ошибки "An older instance of this script is already running. Replace it with this instance?", просто выдает MsgBox1. Мне нужно, чтобы перед перезапуском он с помощью MsgBox2 сообщал о том, что это перезапуск
mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Как настроить запуск/перезапуск скрипта?

16 Apr 2023, 17:12

marusa122 wrote: #SingleInstance есть у меня в скрипте.
Как и другие директивы, #SingleInstance не исполняется по условию.
marusa122 wrote: Мне нужно, чтобы перед перезапуском он с помощью MsgBox2 сообщал о том, что это перезапуск
Наиболее простой способ: создавать пустой файл-маркер в папке со скриптом или в %TEMP%, а при перед выходом стирать его. Если при запуске скрипта файл-маркер уже существует – это перезапуск.
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Re: Как настроить запуск/перезапуск скрипта?

16 Apr 2023, 23:00

Пыталась сделать что-то подобное:

Code: Select all

; Путь к файлу-флагу
flagFile := "ScriptRestarted.flag"

; Проверяем, существует ли файл-флаг
If FileExist(flagFile)
{
    ; Если файл-флаг существует, значит скрипт уже был перезапущен
    ; Удаляем файл-флаг
    FileDelete, %flagFile%
    MsgBox, 48, Перезапуск, Выполняется перезапуск Script. Программа будет открыта через несколько секунд..., 2
    Sleep, 3000
    Run %A_ScriptFullPath%
}
else
{
    ; Если файл-флаг не существует, значит скрипт запущен в первый раз
    ; Создаем файл-флаг
    FileAppend,, %flagFile%
    MsgBox, 64, Готово, Script запущен!
}
Теперь сообщение о перезапуске появляется, даже если программа была открыта впервые
mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Как настроить запуск/перезапуск скрипта?  Topic is solved

17 Apr 2023, 17:11

marusa122 wrote: Пыталась сделать что-то подобное:

Code: Select all

#SingleInstance Force

; Путь к файлу-флагу
flagFile := "ScriptRestarted.flag"

If FileExist(flagFile)
{
	MsgBox Скрипт был перезапущен.
	; Действия после перезапуска
}
Else
{
	MsgBox Скрипт запущен впервые.
	; Действия после первого запуска
}

FileAppend,, %flagFile%

; Сообщение для отладки запуска-перезапуска
MsgBox Нажмите F12, чтобы завершить скрипт.`nНажмите F11, чтобы перезапустить скрипт.


; Все остальные действия скрипта
; ...
; ...
Return


F12::
	; Удаляем флаг и выходим из программы
	FileDelete, %flagFile%
	ExitApp

F11::
	; Флаг не удаляем, чтобы скрипт понял, что это перезапуск
	Reload

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 8 guests