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