Как такие программы, как Spy++, получают информацию?

Я работаю над программным обеспечением для автоматизации тестирования. Чтобы заставить его работать, нужно «посмотреть» на рабочий стол и все открытые окна. Он должен знать, какие окна открыты и из каких элементов управления они состоят. Поэтому он должен делать что-то похожее на то, что делает Spy++ (Spy++ из Visual Studio). Кто-нибудь знает, как Spy++ получает всю информацию? Существуют ли какие-либо методы Windows, которые можно вызвать для получения информации об открытых окнах?


person Marcus Tik    schedule 19.04.2009    source источник


Ответы (2)


Вы можете использовать EnumWindows, чтобы получить все окна верхнего уровня. В lpEnumFunc вы можете вызвать FindWindowEx, чтобы получить дочерние окна/элементы управления каждого окна верхнего уровня, а затем любую другую интересную функцию, которая дает вам необходимую информацию, например GetClassName, GetClassInfo, GetClientRect и т. д. и т. д. Взгляните здесь подробнее

person binarybob    schedule 19.04.2009

Он называется перехватчиком Windows. Ознакомьтесь с Win32 API SetWindowHookEx.

Существуют различные типы ловушек, они находятся в DLL, и эта функция DLL вызывается Windows для типа сообщений Windows определенного потока или всех потоков на одном рабочем столе.

См. также мой связанный ответ о хуках Windows здесь.

person Brian R. Bondy    schedule 19.04.2009