powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как программно закрыть приложение?
12 сообщений из 37, страница 2 из 2
Как программно закрыть приложение?
    #39241333
Maxwellion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, по UDP проходит:) Буду работать в этом направлении.
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39241380
ПаWWWлОдАрЕцMaxwellion,

А если в твоем приложении "которое нужно закрыть" повесить UDP/TCP клиента и открыть на прослушку "некий" порт, а из другого своего приложения ты будешь посылать команду на этот порт и твое первое приложение ее получит и сделает то что ты от него просишь. Это небольшая производная метода предложенного wadman'ом в 19205771
С той же целью можно еще использовать MailSlot: меньше кода.
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39241812
Фотография DetSimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxwellion, use mailslots.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как программно закрыть приложение?
    #39511357
alex25ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, каким образом можно завершить работу приложения (без убийства его процесса), если у него в настройках стоит галочка при закрытии сворачивать в трею? Снять галочку, не тот вариант. При отправке WM_CLOSE окно просто уходит в трею.
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511386
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex25ru,

Можно попытаться окончить его цикл обработки сообщений. PostQuitMessage попробовать (оно WM_QUIT шлет). Не факт, что поможет.
Это если из этого же потока, а если нет - то в лоб послать WM_QUIT нужному потоку. Вероятность, что сработает, еще меньше.
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511391
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex25ru,

Приложение своё или чужое?
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511404
alex25ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приложение чужое.
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511412
alex25ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На соообщение WM_SYSCOMMAND c параметром SC_CLOSE приложение уходит в трею.

По WM_QUIT на msdn написано что, соообщение это нужно отправлять с помощью PostQuitMessage, но у него нету хэндла окна в качестве параметра. Через PostMessage кажется не срабатывает, проверяю пока через InqSoft WindowScanner.
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511416
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex25ru,

Можно попробовать отправить ему WM_QUERYENDSESSION и после него сразу WM_ENDSESSION , т.е. изобразить для него завершение работы системы. Если оно написано не через одно место, то оно должно завершиться.
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511476
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex25ruПо WM_QUIT на msdn написано что, соообщение это нужно отправлять с помощью PostQuitMessage, но у него нету хэндла окна в качестве параметра.
При чем тут окно. Это сообщение потоку, чтобы он свой цикл обработки сообщений потушил, оно никакому окну не идет.
Попробуй в лоб, я ж говорю. Т.е. через PostThreadMessage. Для этого тебе ThreadId понадобится "того" потока. Это будет поток в процессе, который можно получить по GetWindowThreadProcessId.
Затем, с помощью этого PID, находишь все потоки процесса через CreateToolhelp32Snapshot и Thread32First/Next,
и для каждого потока делаешь EnumThreadWindows, пока не найдешь свое искомое окно.
Если нашел - значит именно этому потоку надо цикл обработки сообщений завершить.
Ему и шли WM_QUIT. Может сработать, хотя вероятность этого мала, и проверять мне, конечно же, лень.
Тем более, что сама задача - "Закрыть чужое приложение" - ставит под сомнение вообще её пользу (задачи).
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511524
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockДля этого тебе ThreadId понадобится "того" потока. Это будет поток в процессе, который можно получить по GetWindowThreadProcessId.
Затем, с помощью этого PID, находишь все потоки процесса через CreateToolhelp32Snapshot и Thread32First/Next,
и для каждого потока делаешь EnumThreadWindows, пока не найдешь свое искомое окно.
Если нашел - значит именно этому потоку надо цикл обработки сообщений завершить.
Ему и шли WM_QUIT. Может сработать, хотя вероятность этого мала, и проверять мне, конечно же, лень.
Тем более, что сама задача - "Закрыть чужое приложение" - ставит под сомнение вообще её пользу (задачи).
Серое - зачем, если GetWindowThreadProcessId возвращает ThreadId указанного окна?..
...
Рейтинг: 0 / 0
Как программно закрыть приложение?
    #39511632
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

а, да, точно)
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как программно закрыть приложение?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]