|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.05.2014, 17:00 | #1 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
Завершение работы сторонней программы
Доброго времени суток всем.
Имеется задача: Дано - приложение А.exe Необходимо - из приложения В.exe сделать корректное завершение приложения А.exe Операционка - XP SP3 Среда программирования - Delphi Кто подскажет - как сие можно сделать? Перерыл весь интернет - никаких идей. |
12.05.2014, 17:18 | #2 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,022
|
что значит "корректное"?
можете послать что надо бы закрыться, а как оно там будет ... |
12.05.2014, 17:19 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Если А не поддерживаем прием команд посредством message или типа как это сделано в службах (команда остановки службы) то корректно не получится.
Вышибание TerminateProcess - максимум чего добъешься. но это грязное завершение, сродни вышибанию из диспетчера задач. Что делает приложение А?
I'm learning to live...
|
12.05.2014, 21:36 | #4 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
Программа А считывает состояние экрана и отправляет его на ftp-сервер. Этакое слежение за рабочим столом. Программа В должна производить обновление программы А. Как я понимаю - программа В считывает с ftp-сервера файл update.txt и если там указана новая версия программы A - то производит ее считывание во временную папку, делает завершение старой программы А, производит перезапись программы А и осуществляет ее запуск (может быть просто запуск программы А с последующей передачей ей управления либо просто посредством перезагрузки компа).
Если не сложно - приведите код, на который можно опереться. Как программе А сообщить что она должна закрыться и если она не отрабатывает данное сообщение - просто "вынести" ее... Последний раз редактировалось AnryKZKZ; 12.05.2014 в 21:38. |
12.05.2014, 21:52 | #5 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Если речь о реализации чисто авто-обновления, то можно обойтись без второй программы. Если программа обнаруживает в интернете обновление, то она его скачивает во временный каталог, запускает и сама закрывается. Скаченное обновление копирует себя в основной каталог, запускает себя из основного каталога, и закрывается. Запустившись из основного каталога программа сверяет свою версию, и версию во временном каталоге, и если они совпадают, то временной каталог очищается. Апдейт завершён. Изначально все эти алгоритмы проделываются в OnCreate формы, и на экране ничего не будет видно до окончания обновления.
|
12.05.2014, 21:56 | #6 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
Как процесс сам себя закрывает - оно понятно. А как он (закрытый процесс) копирует себя в основной каталог? И со всем остальным - не совсем понятно. Можете привести код?
|
12.05.2014, 21:59 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
Никто тебе не скажет. Можно использовать это: http://delphiworld.narod.ru/base/ter..._else_app.html http://delphiworld.narod.ru/base/kill_active_app.html Если программа имеет окно. Или это: http://delphiworld.narod.ru/base/kill_nt_task.html Можешь поискать примеры с CreateToolhelp32Snapshot(), которая получает список приложений. Она же даст ID приложения, которое будешь завершать функцией TerminateProcess(). Или примеры работы с PsAPI, что моднее сегодня.
I'm learning to live...
|
|
12.05.2014, 22:03 | #8 |
Пользователь
Регистрация: 15.04.2014
Сообщений: 62
|
А если применительно к авто-обновлению программы? как реализовывается код? где поискать-почитать?
|
12.05.2014, 22:09 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
пример (c) raxp - "Батник обновления программы из Интернета"
(в принципе и всё тему можно почитать...) |
12.05.2014, 22:09 | #10 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
завершение работы программы | oranger | Помощь студентам | 2 | 25.06.2012 22:51 |
Завершение работы программы нажатием ESC | whatever | Помощь студентам | 0 | 30.04.2012 00:07 |
Завершение работы программы без формы | FaTaL | Общие вопросы Delphi | 5 | 21.06.2011 09:55 |
При завершение работы программы появляется окно Microsoft Visual C++ Debug Library | TheWanderer | Visual C++ | 2 | 25.11.2008 00:27 |
Завершение работы чужой программы | Viteef | Win Api | 12 | 24.09.2007 12:31 |