Suppose I've this Window hierarchy for one of the processes:
Main Window (class name: XYZ_Widget_1)
`- Child Window (class name: XYZ_Widget_0)
`- Child-Child Window (class name: XYZ_Renderer)
How do I find the HWND of the Child-Child Window?
I tried using FindWindow Win32 API function on XYZ_Renderer class but the FindWindow function doesn't find child windows.
Then I tried using FindWindow to find Main Window, which succeeded, but after that using FindWindowEx can only find Child Window as Child-Child Window is not a child of Main Window.
I guess I could go one layer deeper and call FindWindowEx on the Child Window once it's found.
But before I do that I figured maybe there is an easy way to find Child-Child Window?
You have to call FindWindowEx() for each child level that you want to go down, specifying the HWND found in the previous level as the parent, eg:
HWND hWnd = FindWindow("XYZ_Widget_1", NULL);
if (hWnd != NULL)
{
hWnd = FindWindowEx(hWnd, NULL, "XYZ_Widget_0", NULL);
if (hWnd != NULL)
{
hWnd = FindWindowEx(hWnd, NULL, "XYZ_Renderer", NULL);
// and so on...
}
}
There is no simplier way to do it. To simplify your code, you could write your own function that accepts a path of class/window names as input, looping through it calling FindWindow/Ex() for each leg as needed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With