Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.64
slamer
#1

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

05.06.2007, 19:56. Просмотров 7799. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как закрыть окно чужого процесса? (C++):

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

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

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

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

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

Как сделать окно (окно домика) в пространстве, как на изображении? - C++
Здравствуйте, как сделать окно в пространстве, как на изображении? сделал крышу и "фундамент": for (int i = 0, x = 9; i < 21;...

8
bazile
63 / 39 / 20
Регистрация: 15.03.2007
Сообщений: 6,910
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
63 / 39 / 20
Регистрация: 15.03.2007
Сообщений: 6,910
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 - C++
Выдираются иконки с помощью ExtractIconEx без проблем. А вот как их потом сохранить в удобном месте? И как потом сделать их 'серенькую'...

Как как корректно закрыть другую программу из своей? - C++
Подскажите плиз как корректно закрыть другую программу из своей которая после посылки ей сообщения SendMessage(hWnd1,WM_CLOSE,0,0); ...

Библиотеки процесса, защита от изменения процесса - C++
Здраствуйте. 1) Как можно получить список библиотек (dll, asi), которые уже загружены в процесс какой-то программы? Мне нужно чекать...

Как закрыть скайп? - C++
Здравствуйте. Скажите, пожалуйста, как в программе на С++ можно закрыть скайп, если он запущен?


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

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

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