» Проверка/закрытие и ожидание запущенных приложений

Официальный сайт SFX Creator
Группа SFX Creator [В]Контакте

Проверка на наличие процессов/окон при запуске SFX архива

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

Тип функции
Выберите тип действий, которые хотите выполнять, если указанное приложение будет найдено запущенным


Попытка закрытия

Без сообщения
Если отмечено - SFX архив будет в тихом режиме пытаться завершить приложение, если оно найдено запущенным
Примечание. Учтите, что если вы включаете показ сообщения, то в сообщении пользователю будет выбор отмены установки либо попытке ручного закрытия конфликтного приложения

Сообщение пользователю
Вы можете ввести своё сообщение пользователю, если приложение найдено запущенным
Если вы не включаете показ сообщения, то в зависимости от настройки Попыток закрытия, SFX архив через указанное количество неудачных попыток убить процесс покажет пользователю сообщение
Если вы включаете показ сообщения
, то пользователю сразу же после обнаружения приложения будет выведено сообщение с кнопками "OK" и "Отмена", при нажатии на "Отмена" - закрытие SFX архива, при нажатии на "OK" - функция будет пытаться убить конфликтный процесс
Примечание. В конце странички есть список переменных найденого конфликтного приложения, которые вы можете использовать в данном сообщении

Попыток закрытия
Здесь вам необходимо ввести число неудачных попыток закрытия, после которых ваш SFX архив в любом случае покажет сообщение пользователю о конфликте с приложением, даже если вы не включаете показ сообщения
Каждая следующая попытка закрытия приложения повторяется через 1 секунду после предыдущей попытки завершения приложения.


Ожидание закрытия

Показать сообщение пользователю
Если отмечено - SFX архив покажет сообщение пользователю при найденом конфликтном приложении
Отличие данного типа функции от закрытия состоит в том, что пользователь не сможет вручную завершить конфликтное приложение через данное сообщение, и сам SFX архив при ожидании закрытия не исполняет команд на завершение приложения в отличии от типа функции "Попытка закрытия"

Сообщение пользователю
Вы можете ввести своё сообщение пользователю, если приложение найдено запущенным
Если вы не включаете показ сообщения, то в зависимости от настройки Времени ожидания, SFX архив завершит свою работу через указанное количество секунд
Если вы включаете показ сообщения, то пользователю будет выведено сообщение с кнопками "OK" и "Отмена", при нажатии на "Отмена" - закрытие SFX архива, при нажатии на "OK" - функция снова будет определять наличие конфликтного приложения и покажет следующее сообщение пользователю через указанное количество секунд в параметре Время ожидания
Примечание. В конце странички есть список переменных найденого конфликтного приложения, которые вы можете использовать в данном сообщении

Время ожидания
Здесь вам необходимо ввести время в секундах, после истечения которых ваш SFX архив завершит свою работу или покажет сообщение пользователю (если включен показ сообщения) из-за наличия запущенного конфликтного приложения.
Каждая следующая попытка поиска приложения повторяется через 1 секунду после предыдущей попытки поиска приложения.
Примечание. Если вы хотите сделать функцию ожидания бесконечной (SFX архив сам не завершит свою работу, пока присутствует конфликтное приложение), то в поле "Время ожидания" укажите отрицательное значение, например -1


Переменные конфликтного приложения

В полях сообщений пользователю вы можете указывать переменные, которые хранят данные о конфликтном приложении, которое мешает вашему SFX архиву продолжить работу.
Примечание. Используйте в сообщении символ $\n для начала новой строки.

Следующие переменные можно использовать для типов определений по окнам (по классу окна, по имени окна и т.д.)
$fp_WinClass
Возвращает класс окна

$fp_WinTitle
Возвращает заголовок окна

$fp_ProcessPID
Возвращает PID процесса

$fp_ProcessName
Возвращает образ процесса (например explorer.exe)

$fp_ProcessFullPath
Возвращает полный путь к файлу приложения


Следующие переменные можно использовать для типа определения по образу процесса
$fp_ProcessName
Возвращает образ процесса (например explorer.exe)

$fp_ProcessFullPath
Возвращает полный путь к файлу приложения


Пример попытки закрытия

Приведу 1 пример
Представим, что поиск идёт по классу окна notepad, тип функции - попытка закрытия

Ввожу попыток закрытия - 4 (это значение по умолчанию)
Ввожу сообщение:
Класс окна: $fp_WinClass$\nЗаголовок окна: $fp_WinTitle $\n---$\nPID процесса: $fp_ProcessPID$\nОбраз процесса: $fp_ProcessName$\nПуть к файлу: $fp_ProcessFullPath$\n$\nПрограмма установки не может продолжить свою работу, пока работает данное приложение$\n$\nOK - завершить процесс$\nОтмена - данная программа установки завершит свою работу
1. Компилирую проект
2. Запускаю блокнот
3. Запускаю созданный SFX архив

Вижу сообщение:
Класс окна: Notepad
Заголовок окна: Безымянный — Блокнот
---
PID процесса: 3976
Образ процесса: notepad.exe
Путь к файлу: C:\Windows\system32\notepad.exe

Программа установки не может продолжить свою работу, пока работает данное приложение

OK - завершить процесс
Отмена - данная программа установки завершит свою работу