|
|
|
Supreme Being
      
участник
Last Login: 05.03.2008 15:30
Сообщ.: 236,
Visits: 1 733
|
|
Добрый день. Объясните пожалуйста, почему по OutWnd->PostMessage( WM_CLOSE, 0, 0 ); не хочет закрываться окно? Ситуация следующая: 1) В Spy++ у двух окон один и тот - же PROCESS ID, один и тот же THREAD ID. 2) Хэндл нужного окна известен, найден через FindWindow() Проблема в том, что оно ни каким способом не хочет закрываться.В чем может быть причина? Спасибо.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Попробуй через функцию WinAPI это сделать: SendMessage(hwnd, WM_CLOSE, 0, 0);
|
|
|
|
|
Supreme Being
      
участник
Last Login: 05.03.2008 15:30
Сообщ.: 236,
Visits: 1 733
|
|
Пробовал, но дело вот в чем: (Забыл написать, проект MFC, VS 2005.) У меня функция, закрывающая окно описана в классе главного окна. Поэтому если вызвать SendMessage в контексте этой функции, то SendMessage не имеет одного первого параметра - hWnd. ( Видимо предпологая, что она вызывается для объекта текущего класса. ) И поэтому я делаю следующим образом:
CWnd *MyWnd; MyWnd = FindWindow(...); MyWnd->PostMessage(...); ( или MyWnd->SendMessage(...); )И это не срабатывает. Не могу понять почему, т.к. другие окна закрываются.
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Чтобы вызвать API функцию добавь перед ее именем двойное двоеточие, чтобы указать что эта функция из глобальной области видимости. ::SendMessage(hwnd, .... );
|
|
|
|
|
Supreme Being
      
участник
Last Login: 05.03.2008 15:30
Сообщ.: 236,
Visits: 1 733
|
|
Спасибо, уже кое что. Только теперь закрывается не только нужное окошко другого приложения, но и и само приложение. Уф, а если сделать сообщение именно этому окну Alt+F4, может так сработает? Спасибо еще раз, буду ковырять дальше.
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.06.2007 8:03
Сообщ.: 28,
Visits: 42
|
|
| ну так если это окошко - главное окно приложения, то оно (приложение) и должно завершиться по его закрытию. попробуй скрывать его, тогда и на экране его не будет и приложение не завершится
|
|
|
|
|
Supreme Being
      
участник
Last Login: 05.03.2008 15:30
Сообщ.: 236,
Visits: 1 733
|
|
По идее оно не является главным окном приложения. Как я уже писал главное окно приложения и окно которое нужно закрыть имеют разные hWnd, но одинаковый processID судя по Spy++.Так что пока решение не нашлось.
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.06.2007 8:03
Сообщ.: 28,
Visits: 42
|
|
| еще раз... скрывать не получается? в чем проблема скрыть нужное окно?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 05.03.2008 15:30
Сообщ.: 236,
Visits: 1 733
|
|
Скрыть то его без проблем, только нужно именно закрыть. Т.к. суть приложения - мониторить эти окошки, соответственно они будут появляться снова и копить их не приемлемо.
|
|
|
|