|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.02.2017, 19:10 | #1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Функция CloseWindow()
Здравствуйте.
Эта функция закрывает окно "по хорошему", так как бы если я нажал на крестик окна ? Мне просто нужно программно и правильно завершить работу другого процесса; правильно - для того, что бы этот процесс завершил все свои дочерние процессы.
Подпись ? Не, не слышал ...
|
28.02.2017, 19:20 | #2 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Тест на деле показал, что в данном случае функция CloseWindow() бесполезна; процесс продолжает висеть.
Так же обнаружил, что функция CloseHandle() не завершает процесс, хендл которого я передаю этой функции. Процесс висит. Это при том, что я передаю хендл именно процесса. Может меня туда не пускают ...
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 28.02.2017 в 19:30. |
28.02.2017, 19:52 | #3 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
А может у вас прав не хватает? а может хендл не тот? а может...
|
28.02.2017, 20:07 | #4 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
p51x, права фул админ, -UAC, куча дополнительного обвеса в виде служб выключено. Хендлы получаю из спискоты процессов (.NET\System.Diagnostics.Process), так что "не тот хендл" не вариант - ибо FlashWindow и ShowWindow работают замечтательно.
Подпись ? Не, не слышал ...
|
28.02.2017, 21:19 | #5 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
А дубликат с DUPLICATE_CLOSE_SOURCE делаете себе?
|
28.02.2017, 22:12 | #6 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Нет. А надо ? Мне нужно просто отослать процессу инфу типа "закрывайся по хорошему". По плохому - только вручную, или нужно проходить по всем дочерним, на которые у меня нет никаких хендлов.
Подпись ? Не, не слышал ...
|
28.02.2017, 22:29 | #7 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Я обнаружил, что после ShowWindow(hwnd,0) хендл окна имеет значение ноль.
SW_HIDE изначально нужен. Как восстанавливать ?
Подпись ? Не, не слышал ...
|
28.02.2017, 22:36 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
Если вы хотите "просто нормально" завершить приложение, то сначала шлете окну через сендмессаж (сендмессажтаймаут) WM_CLOSE и через таймайт вызываете терминатепроцесс... Только не забудь открывать хендл процесса с нужными правами.
|
03.03.2017, 07:15 | #9 | |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Цитата:
SendMessage(wnd, WM_DESTROY, 0,0); Где wnd ее главное окно. "по хорошему" или нет - это зависит от организации обработки сообщений в окне. когда вы нажимаете на крестик, в окно приходит сообщение WM_CLOSE. Закроется программа или нет - зависит от того, что прописано в WM_CLOSE. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Функция | Palin4ik | Общие вопросы C/C++ | 1 | 30.05.2013 15:21 |
Функция | Xenta | Microsoft Office Excel | 2 | 31.01.2011 19:54 |
Как использовать функции FindWindow и CloseWindow? | __Demon__ | Общие вопросы C/C++ | 4 | 14.08.2009 15:29 |
Функция в VB | asd48 | Помощь студентам | 1 | 25.12.2008 23:29 |
одна функция потока, а другая функция - член класса запускающего этот поток | Дмитрий_Ч | Общие вопросы C/C++ | 2 | 27.09.2007 08:50 |