|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.06.2019, 22:27 | #1 |
Новичок
Джуниор
Регистрация: 27.01.2015
Сообщений: 2
|
Как перезапустить стороннюю программу
Задача: вам нужно написать программу, которая будет следить за работой другой программы, исходных кодов которой у вас нет. При необходимости ваша программа будет перезапускать её.
Данная задача делится на 3 подзадачи: 1. Определить необходимость перезапуска 2. Закрыть программу 3. Запустить программу заново 1. Необходимость перезапуска Перезапуск программы может потребоваться по следующим причинам: 1) Желание пользователя. Это, понятное дело, закон. 2) Программа перестала выполнять свою функцию или выполняет её неверно. Здесь невозможно дать универсального совета. Вы сами должны определить это в соответствии с назначением программы и инструкцией к ней. 3) Программа не запущена (например, после перезагрузки) или запущена несколько раз. Вот код, позволяющий отследить это: Код:
Функция возвращает значение, равное числу запусков программы: 0 - программа не запущена. 4) Программа зависла - окно не отвечает. Здесь требуется знать название окна: WindowName Код:
2. Закрыть программу Функция, которая завершает все процессы программы, сколько бы их не было запущено и в каком состоянии (зависшем или рабочем) они ни были: Код:
3. Запустить программу заново Программу можно запустить при помощи функции ShellExecute из модуля ShellAPI: (здесь случай, когда программа в том же каталоге, если нет - укажите полный путь вместо ExtractFilePath(paramstr(0))) Код:
Но если программа не имеет цифровой подписи может возникнуть проблема в виде окошка "Предупреждение системы безопасности - Не удаётся проверить издателя. Вы действительно хотите запустить этот файл?" , которое можно убрать редактированием реестра. Если по соображениям безопасности данный вариант вам не подходит, можно сделать эмуляцию нажатия кнопки: Код:
Две табуляции нужны, чтобы перейти на кнопку "Выполнить", так как по умолчанию фокус стоит на кнопке "Отмена". Если у вас не русская Windows, замените заголовок окна на соответствующий вашей системе. Последний раз редактировалось governor; 08.06.2019 в 22:40. |
20.06.2019, 09:34 | #2 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
Так и чего дальше?? Все коды есть, соберите все в кучу и все.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача настроек из моей формы в стороннюю программу | DarkEvolution | Общие вопросы Delphi | 2 | 26.07.2018 21:11 |
Как закрыть стороннюю программу программно | 1_4yma_1 | Общие вопросы Delphi | 5 | 08.06.2018 13:43 |
Прикрутить стороннюю библиотеку builder6 | Imjonhson | C++ Builder | 15 | 05.02.2017 08:50 |
Как перезапустить программу по нажатию одной кнопки? | nomerochek | C# (си шарп) | 1 | 14.09.2016 11:50 |
Запустить стороннюю программу с ПРАВАМИ АДМИНИСТРАТОРА - Delphi WinAPI | yurius | Общие вопросы Delphi | 6 | 15.05.2016 15:19 |