背景
我需要为Windows应用程序自动化项目实现一些Spy++-esque功能。为了简单起见,让我们假设我的应用程序A (用C#或C++编写)试图自动化现有的Win32 Application B (不是WPF或OpenGL应用程序)。让我们也假设应用程序B有一个图片框,我想捕捉。在运行时不知道这个图片框在B中的确切大小和位置,因为它是由B动态创建和调整大小的。但是,可以肯定的是,全局屏幕坐标(x, y)将始终在所讨论的图片框中。
问题
我可以使用B在运行时检索[user32.dll] FindWindow的主窗口句柄。但是,B中的图片框有一个在运行时不为我的应用程序(A)所知的HWND。如果我知道图片框‘HWND是在全局屏幕坐标(x, y)下,当B最大化并位于前台时,我能检索它吗?
也就是这样的东西:

当被定位在特定的屏幕坐标上时。
编辑1:
我尝试了@David Heffernan在注释中提出的解决方案(即函数@David Heffernan的用法),但是这样做的效果是而不是:
void* window_hwnd = FindWindow(null, "<title of the window>");
SendMessage(window_hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
ShowWindow(window_hwnd, SW_MAXIMIZE);
SetForegroundWindow(window_hwnd);
SetActiveWindow(window_hwnd);
SetWindowPos(window_hwnd, null, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
RedrawWindow(window_hwnd, null, null, RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
void* control_hwnd = WindowFromPoint(300, 300);理论上,这应该给我在(x=300, y=300)位置控制的HWND。但是,control_hwnd具有与window_hwnd相同的值。
https://stackoverflow.com/questions/74086580
复制相似问题