我正在研究一种用于测试自动化的软件。为了让它工作,需要在桌面和所有打开的窗口上“看看”。它需要知道哪些窗口是打开的以及它们包含哪些控件。所以它必须做类似于Spy ++正在做的事情(来自Visual Studio的Spy ++)。 有谁知道Spy ++如何得到所有信息? 有没有可以调用的Windows方法来检索有关打开窗口的信息?
答案 0 :(得分:8)
您可以使用EnumWindows获取所有顶级窗口。在lpEnumFunc
中,您可以调用FindWindowEx来获取每个顶级窗口的子窗口/控件,然后调用任何其他有趣的函数来为您提供所需的信息,例如: GetClassName,GetClassInfo,GetClientRect等。请查看here了解更多信息
答案 1 :(得分:4)
它被称为windows hook。检查Win32 API SetWindowHookEx。
有不同类型的钩子,它们驻留在DLL中,并且Windows调用DLL函数用于特定线程的Windows消息类型或同一桌面中的所有线程。