Spy ++等软件如何获取信息?

我正在开发testing自动化软件。 为了让它工作,需要在桌面和所有打开的窗口上“查看”。 它需要知道哪些窗口是打开的以及它们由哪些控件组成。 所以它必须做一些类似Spy ++正在做的事情(从Visual Studio Spy ++)。 有谁知道如何Spy ++得到的所有信息? 有没有任何Windows方法可以调用检索有关打开窗口的信息?

您可以使用EnumWindows获取所有顶级窗口。 在lpEnumFunc你可以调用FindWindowEx来获得每个顶层窗口的子窗口/控件,然后是任何其他有趣的函数,给你你需要的信息,例如GetClassName , GetClassInfo , GetClientRect等等。

这就是所谓的Windows钩子 。 检出Win32 API SetWindowHookEx 。

有不同类型的钩子,它们驻留在一个DLL中,这个DLL函数被Windows调用,用于特定线程的窗口消息的类型或同一桌面上的所有线程。

请在这里查看我的Windows挂钩相关的答案 。