Я пытаюсь получить hwnd дочернего окна (caption = "Reset") для применения в функции IsWindowVisible (), но дочернее окно не может быть найдено.
Это код:
#include <iostream>
#include <windows.h>
using namespace std;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
char class_name[100];
char title[100];
GetClassNameA(hwnd,class_name, sizeof(class_name));
GetWindowTextA(hwnd,title,sizeof(title));
cout <<"Window title: "<<title<<endl;
cout <<"Class name : "<<class_name<<endl;
cout <<"hwnd : " <<hwnd<<endl<<endl;
return TRUE;
}
int main()
{
HWND hwnd = ::FindWindowA("#32770",NULL);
EnumChildWindows(hwnd,EnumWindowsProc,0);
system("PAUSE");
return 0;
}
Есть много окон с тем же именем класса # 32770 (диалог), также без заголовка. После запуска кода в результате появлялись разные типы окон (с такими именами классов, как WorkerW, IME и т. Д.).
Диаграмма дерева, полученная из Spy ++, выглядит следующим образом:
... Окно 00180726 "" # 32770 (диалоговое окно)
... Окно 001F0962 Кнопка "Сброс"
Я пытался найти дочернее окно, если заголовок окна и класс окна (# 32770) включены,это успешно.
Мой вопрос: Как найти дочернее окно (Сброс), если у нас нет определенного родительского окна? Я пытался применить EnumWindows, EnumChildWindows, FindWindows, FindWindowsEx в main (), но все еще не могу получить то, что ожидаю.
Заранее благодарим за любую помощь.