powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / не работает FindWindow
3 сообщений из 3, страница 1 из 1
не работает FindWindow
    #33155936
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!
Мне нужно из одной программы закрыть другую. Та другая при закрытии выдаёт окно сообщения с заголовком "Внимание!", мне его тоже надо закрыть.
Вот мой код:
HWND hwnd=FindWindow(NULL,"Заголовок_Главного_Окна_Программы");
bool r=false;
if(hwnd)
{
PostMessage(hwnd,WM_CLOSE,0,0);
HWND hwnddlg=FindWindow(NULL,"Внимание!");
// HWND hwnddlg=GetNextWindow(hwnd,GW_HWNDNEXT);
while (hwnddlg)
{
HWND CurHWND=GetWindow(hwnddlg,GW_CHILD);
char WndText[150];
char WndClass[10];
while (CurHWND)
{
GetWindowText(CurHWND,WndText,150);
GetClassName(CurHWND,WndClass,10);
if (!strcmpi(WndClass,"Button"))
if (!strcmpi(WndText,"&Да"))
{
r=SetActiveWindow(hwnddlg);
r=PostMessage(CurHWND,BM_CLICK,0,0);
break;
}
CurHWND=GetNextWindow(CurHWND,GW_HWNDNEXT);
}
hwnddlg=FindWindow(NULL,"Внимание!");
}
}
Этот код работает в отладчике, а когда запускаю без отладки не работает,
окно "Внимание!" остаётся на экране и не закрывается.
В чём дело?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
не работает FindWindow
    #33156309
SeraTJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй-ка во втором случае, когда ты ищешь окно "Внимание!", использовать функцию FindWindowEх, потому как функция FindWindow ищет top-level окна.
...
Рейтинг: 0 / 0
не работает FindWindow
    #33157616
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема скорее всего в том, что закрываемая программа показывает предупреждающее окно не сразу как получает команду на закрытие а с некоторой задержкой.
Сделай вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
HWND hwnd=FindWindow(NULL,"Заголовок_Главного_Окна_Программы");
bool r=false;
if(hwnd)
{
   PostMessage(hwnd,WM_CLOSE, 0 , 0 );
   HWND hwnddlg;
   do {
      hwnddlg=FindWindow(NULL,"Внимание!");
   } while (!hwnddlg)
   ....
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / не работает FindWindow
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]