Как программное обеспечение, такое как Spy ++, получает информацию? - PullRequest
3 голосов
/ 19 апреля 2009

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

Ответы [ 2 ]

8 голосов
/ 19 апреля 2009

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

4 голосов
/ 19 апреля 2009

Это называется windows hook . Оформить заказ Win32 API SetWindowHookEx .

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

Пожалуйста, также посмотрите мой связанный ответ по хукам Windows здесь .

...