无法找到没有 WindowName 和 ClassName 的 child window 的 parent window #32770(对话框)
Unable to find child window of a parent window that don't have WindowName with ClassName #32770 (Dialog)
我正在尝试获取 child window(caption = "Reset") 的 hwnd 以应用于 IsWindowVisible() 函数,但是 child window 找不到。
这是代码:
#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;
}
有很多 window 具有相同的 class 名称 #32770(对话),也没有标题。 运行代码后,结果出来了不同类型的window(class名称如WorkerW,IME等)。
从Spy++得到的树状图是这样的:
...Window 00180726 "" #32770(对话框)
...Window 001F0962 "Reset" 按钮
我试图找到 child window 如果包含 window 标题和 window class(#32770),它成功了。
我的问题是:如果我们没有特定的 parent window,如何找到 child window(重置)?我尝试在 main() 中应用 EnumWindows、EnumChildWindows、FindWindows、FindWindowsEx 但仍然无法得到我期望的结果。
预先感谢您提供的任何帮助。
如果您知道其位置,则可以使用 WindowFromPoint 获取父对话框,然后调用 EnumChildWindows 获取其子对话框
我正在尝试获取 child window(caption = "Reset") 的 hwnd 以应用于 IsWindowVisible() 函数,但是 child window 找不到。
这是代码:
#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;
}
有很多 window 具有相同的 class 名称 #32770(对话),也没有标题。 运行代码后,结果出来了不同类型的window(class名称如WorkerW,IME等)。
从Spy++得到的树状图是这样的:
...Window 00180726 "" #32770(对话框)
...Window 001F0962 "Reset" 按钮
我试图找到 child window 如果包含 window 标题和 window class(#32770),它成功了。
我的问题是:如果我们没有特定的 parent window,如何找到 child window(重置)?我尝试在 main() 中应用 EnumWindows、EnumChildWindows、FindWindows、FindWindowsEx 但仍然无法得到我期望的结果。
预先感谢您提供的任何帮助。
如果您知道其位置,则可以使用 WindowFromPoint 获取父对话框,然后调用 EnumChildWindows 获取其子对话框