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

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


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


Ответы (2)


arrow_upward
8
arrow_downward

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

person binarybob    schedule 19.04.2009

arrow_upward
4
arrow_downward

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

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

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

person Brian R. Bondy    schedule 19.04.2009