Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2017, 19:10   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Функция CloseWindow()

Здравствуйте.
Эта функция закрывает окно "по хорошему", так как бы если я нажал на крестик окна ?
Мне просто нужно программно и правильно завершить работу другого процесса; правильно - для того, что бы этот процесс завершил все свои дочерние процессы.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 28.02.2017, 19:20   #2
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Тест на деле показал, что в данном случае функция CloseWindow() бесполезна; процесс продолжает висеть.
Так же обнаружил, что функция CloseHandle() не завершает процесс, хендл которого я передаю этой функции. Процесс висит. Это при том, что я передаю хендл именно процесса.
Может меня туда не пускают ...
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 28.02.2017 в 19:30.
OmegaBerkut вне форума Ответить с цитированием
Старый 28.02.2017, 19:52   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А может у вас прав не хватает? а может хендл не тот? а может...
p51x вне форума Ответить с цитированием
Старый 28.02.2017, 20:07   #4
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

p51x, права фул админ, -UAC, куча дополнительного обвеса в виде служб выключено. Хендлы получаю из спискоты процессов (.NET\System.Diagnostics.Process), так что "не тот хендл" не вариант - ибо FlashWindow и ShowWindow работают замечтательно.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 28.02.2017, 21:19   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А дубликат с DUPLICATE_CLOSE_SOURCE делаете себе?
p51x вне форума Ответить с цитированием
Старый 28.02.2017, 22:12   #6
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А дубликат с DUPLICATE_CLOSE_SOURCE делаете себе?
Нет. А надо ? Мне нужно просто отослать процессу инфу типа "закрывайся по хорошему". По плохому - только вручную, или нужно проходить по всем дочерним, на которые у меня нет никаких хендлов.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 28.02.2017, 22:29   #7
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Я обнаружил, что после ShowWindow(hwnd,0) хендл окна имеет значение ноль.
SW_HIDE изначально нужен.
Как восстанавливать ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 28.02.2017, 22:36   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Если вы хотите "просто нормально" завершить приложение, то сначала шлете окну через сендмессаж (сендмессажтаймаут) WM_CLOSE и через таймайт вызываете терминатепроцесс... Только не забудь открывать хендл процесса с нужными правами.
p51x вне форума Ответить с цитированием
Старый 03.03.2017, 07:15   #9
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Эта функция закрывает окно "по хорошему", так как бы если я нажал на крестик окна ?
Если нужно закрыть чужую программу, то так:
SendMessage(wnd, WM_DESTROY, 0,0);
Где wnd ее главное окно.
"по хорошему" или нет - это зависит от организации обработки сообщений в окне.
когда вы нажимаете на крестик, в окно приходит сообщение WM_CLOSE. Закроется программа или нет - зависит от того, что прописано в WM_CLOSE.
BLACK_RAIN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция 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