Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/44: Рейтинг темы: голосов - 44, средняя оценка - 4.91
slamer
1

Как закрыть окно чужого процесса?

05.06.2007, 19:56. Просмотров 7926. Ответов 8
Метки нет (Все метки)

Добрый день.
Объясните пожалуйста, почему по
C++
1
     OutWnd->PostMessage( WM_CLOSE, 0, 0 );
не хочет закрываться окно?
Ситуация следующая:
1) В Spy++ у двух окон один и тот - же PROCESS ID, один и тот же THREAD ID.
2) Хэндл нужного окна известен, найден через FindWindow()
Проблема в том, что оно ни каким способом не хочет закрываться.
В чем может быть причина?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2007, 19:56
Ответы с готовыми решениями:

Внедряемся в память чужого процесса
Сорри, пока писал, разобрался сам... Удалите тему плз.

Как закрыть окно opengl не закрывая консольного окна c++?
Как закрыть окно opengl не закрывая консольного окна c++?

Добавление своей dll в список dll подгружаемых процессом чужого процесса
Вообще вопрос такой,как можно внедрить свою dll в список Import чужого не...

Двойное окно: наблюдаются два одноимённых процесса
Недавно возобновив программирование я обнаружил забавное явление, при запуске...

Как вызвать функцию чужого приложения, как подменить значения аргументов функции?
собственно вопрос первый: мне нужно каким то образом из своей...

8
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
06.06.2007, 14:04 2
Попробуй через функцию WinAPI это сделать: SendMessage(hwnd, WM_CLOSE, 0, 0);
0
slamer
06.06.2007, 18:51 3
Пробовал, но дело вот в чем: (Забыл написать, проект MFC, VS 2005.)
У меня функция, закрывающая окно описана в классе главного окна.
Поэтому если вызвать SendMessage в контексте этой функции, то SendMessage не имеет одного первого параметра - hWnd.
( Видимо предпологая, что она вызывается для объекта текущего класса. )
И поэтому я делаю следующим образом:
C++
1
2
3
CWnd *MyWnd;
MyWnd = FindWindow(...);
MyWnd->PostMessage(...); ( или  MyWnd->SendMessage(...); )
И это не срабатывает.
Не могу понять почему, т.к. другие окна закрываются.
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
06.06.2007, 19:29 4
Чтобы вызвать API функцию добавь перед ее именем двойное двоеточие, чтобы указать что эта функция из глобальной области видимости.
::SendMessage(hwnd, .... );
0
slamer
06.06.2007, 20:32 5
Спасибо, уже кое что.
Только теперь закрывается не только нужное окошко другого приложения, но и и само приложение.
Уф, а если сделать сообщение именно этому окну Alt+F4, может так сработает?
Спасибо еще раз, буду ковырять дальше.
genok
0 / 0 / 0
Регистрация: 24.02.2007
Сообщений: 30
08.06.2007, 16:12 6
ну так если это окошко - главное окно приложения, то оно (приложение) и должно завершиться по его закрытию. попробуй скрывать его, тогда и на экране его не будет и приложение не завершится
0
slamer
28.06.2007, 18:19 7
По идее оно не является главным окном приложения.
Как я уже писал главное окно приложения и окно которое нужно закрыть имеют разные hWnd, но одинаковый processID судя по Spy++.
Так что пока решение не нашлось.
genok
0 / 0 / 0
Регистрация: 24.02.2007
Сообщений: 30
30.06.2007, 12:04 8
еще раз... скрывать не получается? в чем проблема скрыть нужное окно?
0
slamer
11.07.2007, 16:15 9
Скрыть то его без проблем, только нужно именно закрыть.
Т.к. суть приложения - мониторить эти окошки, соответственно они будут появляться снова и копить их не приемлемо.
11.07.2007, 16:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2007, 16:15

Как сделать окно (окно домика) в пространстве, как на изображении?
Здравствуйте, как сделать окно в пространстве, как на изображении? сделал...

Как сохранить иконки, выдранные из чужого *.EXE в свой *.ICO
Выдираются иконки с помощью ExtractIconEx без проблем. А вот как их потом...

Как как корректно закрыть другую программу из своей?
Подскажите плиз как корректно закрыть другую программу из своей которая после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru