GUI Шпионы (информация к размышлению)
В этой статье я попытался сделать краткий обзор инструментов, которые помогают исследовать пользовательский интерфейс Windows-приложений, и с которыми мне в той или иной мере доводилось работать самому. Для иллюстрации работы инструментов я буду использовать простую форму с кнопкой и пустым (и по этому невидимым в рантайме) PictureBox. Вот как эта форма выглядит в дизайн-тайме (первый) и в рантайме (второй).
Итак, встречайте: Spy ++, The Customiser, Managed Spy и WfSpy. Первые два инструмента рассчитаны на работу с native Win32 приложениями, так как были созданы до появления технологии .NET, однако работу свою выполняют хорошо и с managed-приложениями. Естественно, всех свойств и событий для .NET контролов они не покажут, но наиболее важные, такие как: координаты, размеры, текст, доступность (enable/disable) - будут.
Spy ++ (Microsoft, Win32)
Пожалуй, самый известный в своем роде. Этим инструментом я пользуюсь постоянно и по сей день, поскольку это самый надежный инструмент из перечисленных. Не так давно у него появился младший брат Remote Spy – ориентированный на работу с приложениями, написанными для мобильных устройств.Но это уже совсем другая история. Spy++ уже много лет входит в состав Visual Studio. Однако через меню кнопки Пуск (Start) вы его, скорее всего, не найдете и поэтому рекомендую самостоятельно поискать в каталоге установки студии через обычный файловый поиск spyxx.exe. У меня он находится здесь VSDir\Common7\Tools (VSDir – каталог, где установлена студия). На рисунке ниже представлено главное окно Spy++, как оно выглядит сразу же после старта.Инструмент умеет показывать информацию о запущенных процессах, созданных окнах, потоках. Но работает только в режиме readonly – показывает различные свойства перечисленных объектов системы, но менять не дает, в отличие от The Customiser или Managed Spy. Позволяет так же отслеживать события, которые приходят к интересующему окну. Чтобы начать исследовать какую-нибудь сложную форму или контрол, вызовите команду Find Window из меню Spy.
В появившемся диалоге наведите курсор на иконку окна с прицелом и перетащите ее на интересующее окно или контрол.
Затем нажмите OK. В результате появится диалог со свойствами выбранного объекта. Пример такого окна ниже.
С этого диалога на закладке Windows можно быстро перейти к родительскому окну, на закладке Process можно быстро перейти к родительскому процессу или потоку исследуемого окна. Если нажать кнопку Synchronize, выбранный объект будет найден в дереве окон, которое отображается в центральной части главного окна.
Закроем окно свойств и перейдем к дереву окон. В контекстном меню узла дерева есть несколько команд, но расскажу только о Highlight. Эта команда позволяет подсветить мерцающей рамкой контрол или окно, соответствующее узлу дерева. Разумеется, чтобы ее увидеть, надо чтобы окно, в котором находится выбранный контрол, находилось в области видимости.
Ну, вот вкратце и все. У инструмента еще много возможностей и кого он заинтересует, найдет их самостоятельно. Дополнительное описание Spy++ можно найти на его страничке в MSDN.
The Customiser (Wanga International, Win32)
Это первый инструмент такого рода, с которым я познакомился. Настоящая игрушка для программистов (и не только). В изучении пользовательского интерфейса приложений намного удобней и интуитивней Spy++ или Managed Spy. Скачать его можно здесь. Позволяет во время работы приложения менять свойства его контролов – размеры, положение, надписи, видимость, доступность (enable/disable) и еще много чего. Посылать различные сообщения контролам и окнам. Например, любую кнопку, которая находится в состоянии disable можно сделать enable, потом нажать и посмотреть что произойдет :). Вообще The Customiser умеет много чего, всего и не перечесть. Весьма прикольно при помощи The Customiser модифицировать панель задач и кнопу Пуск/Start. На рисунке ниже показан результат работы над кнопкой Start и панелью задач.
После запуска The Customiser появится небольшое окошко с бегающим вправо-влево шариком. Кстати, после инсталляции The Customiser надо искать в корне меню All Programs, никаких папок с именем компании или приложения он не создает.
Нажмите кнопку Edit Window и появится основное окно для работы. Далее, надо нажать на кнопку On (после чего курсор поменяет свой вид на большой и желтый) и затем можно выбрать интересующее окно или контол.
После выбора компонента для исследования в диалоге появятся дополнительные закладки, на которых сгруппированы информация и действия по изменению компонента.
Коротко опишу назначение каждой закладки.
Managed Spy (Microsoft, .NET 2.0)
Это бесплатный инструмент, написанный Benjamin Wulfe, участвовавшим в разработке Visual Studio, дизайнера Windows Forms, и ряда классов для Framework и Compact Framework. Скачать ManagedSpy можно здесь. Сразу после старта в левой части окна отображаются процессы с managed кодом, а справа – свойства выбранного процесса или его дочернего элемента.
В панели свойств отображаются свойства выбранного контрола, где их можно не только просматривать, но и менять (в отличие от Spy++). На рисунке ниже показан результат изменения свойства BackColor для невидного в рантайме PictureBox.
Есть функция, позволяющая на исследуемом окне подсветить исследуемый контрол (аналогично команде Highlight из Spy++). Для этого в меню View вызовите команду Show Window. В общем-то, простой и удобный использовании инструмент, но, к сожалению, не на всех окнах ManagedSpy работает. На простых все ОК, а вот на сложных иногда дает сбои. По крайней мере, у себя в проекте я им воспользоваться не смог. Более подробное описание ManagedSpy можно найти в статье в MSDN Magazine.
WfSpy (.NET 1.0, .NET 1.1)
Инструмент написан Rama Krishna Vavilala. Распространяется бесплатно и исходниками, которые прилагаются к его статье на CodeProject. Статья доступна вот здесь. К ней прилагается вариант, скомпилированный для .net 1.0. но для работы под .net 1.1 достаточно его просто перекомпилировать в VS 2003. В целом по внешнему виду очень похож на ManagedSpy. Сразу после старта в центральной части окна отображаются процессы с managed кодом. Чтобы посмотреть свойства заинтересовавшего компонента надо нажать кнопку Details. После чего откроется окно со списком свойств выбранного компонента, где можно как просматривать, так и изменять свойства компонента.
Заключение
Как видно из этого небольшого обзора, большинство инструментов достаточно просты и работа с ними интуитивно понятна. Самый сложный в использовании – это Spy++, однако, он, пожалуй, и самый функциональный. В статье приведены четыре инструмента, с другими мне сталкиваться не приходилось, так что если вы знакомы с каким-либо еще подобным инструментом - пожалуйста, напишите об этом в комментариях.
Итак, встречайте: Spy ++, The Customiser, Managed Spy и WfSpy. Первые два инструмента рассчитаны на работу с native Win32 приложениями, так как были созданы до появления технологии .NET, однако работу свою выполняют хорошо и с managed-приложениями. Естественно, всех свойств и событий для .NET контролов они не покажут, но наиболее важные, такие как: координаты, размеры, текст, доступность (enable/disable) - будут.
Spy ++ (Microsoft, Win32)
Пожалуй, самый известный в своем роде. Этим инструментом я пользуюсь постоянно и по сей день, поскольку это самый надежный инструмент из перечисленных. Не так давно у него появился младший брат Remote Spy – ориентированный на работу с приложениями, написанными для мобильных устройств.Но это уже совсем другая история. Spy++ уже много лет входит в состав Visual Studio. Однако через меню кнопки Пуск (Start) вы его, скорее всего, не найдете и поэтому рекомендую самостоятельно поискать в каталоге установки студии через обычный файловый поиск spyxx.exe. У меня он находится здесь VSDir\Common7\Tools (VSDir – каталог, где установлена студия). На рисунке ниже представлено главное окно Spy++, как оно выглядит сразу же после старта.Инструмент умеет показывать информацию о запущенных процессах, созданных окнах, потоках. Но работает только в режиме readonly – показывает различные свойства перечисленных объектов системы, но менять не дает, в отличие от The Customiser или Managed Spy. Позволяет так же отслеживать события, которые приходят к интересующему окну. Чтобы начать исследовать какую-нибудь сложную форму или контрол, вызовите команду Find Window из меню Spy.
В появившемся диалоге наведите курсор на иконку окна с прицелом и перетащите ее на интересующее окно или контрол.
Затем нажмите OK. В результате появится диалог со свойствами выбранного объекта. Пример такого окна ниже.
С этого диалога на закладке Windows можно быстро перейти к родительскому окну, на закладке Process можно быстро перейти к родительскому процессу или потоку исследуемого окна. Если нажать кнопку Synchronize, выбранный объект будет найден в дереве окон, которое отображается в центральной части главного окна.
Закроем окно свойств и перейдем к дереву окон. В контекстном меню узла дерева есть несколько команд, но расскажу только о Highlight. Эта команда позволяет подсветить мерцающей рамкой контрол или окно, соответствующее узлу дерева. Разумеется, чтобы ее увидеть, надо чтобы окно, в котором находится выбранный контрол, находилось в области видимости.
Ну, вот вкратце и все. У инструмента еще много возможностей и кого он заинтересует, найдет их самостоятельно. Дополнительное описание Spy++ можно найти на его страничке в MSDN.
The Customiser (Wanga International, Win32)
Это первый инструмент такого рода, с которым я познакомился. Настоящая игрушка для программистов (и не только). В изучении пользовательского интерфейса приложений намного удобней и интуитивней Spy++ или Managed Spy. Скачать его можно здесь. Позволяет во время работы приложения менять свойства его контролов – размеры, положение, надписи, видимость, доступность (enable/disable) и еще много чего. Посылать различные сообщения контролам и окнам. Например, любую кнопку, которая находится в состоянии disable можно сделать enable, потом нажать и посмотреть что произойдет :). Вообще The Customiser умеет много чего, всего и не перечесть. Весьма прикольно при помощи The Customiser модифицировать панель задач и кнопу Пуск/Start. На рисунке ниже показан результат работы над кнопкой Start и панелью задач.
После запуска The Customiser появится небольшое окошко с бегающим вправо-влево шариком. Кстати, после инсталляции The Customiser надо искать в корне меню All Programs, никаких папок с именем компании или приложения он не создает.
Нажмите кнопку Edit Window и появится основное окно для работы. Далее, надо нажать на кнопку On (после чего курсор поменяет свой вид на большой и желтый) и затем можно выбрать интересующее окно или контол.
После выбора компонента для исследования в диалоге появятся дополнительные закладки, на которых сгруппированы информация и действия по изменению компонента.
Коротко опишу назначение каждой закладки.
- Size and Position – просмотр и изменение положения и размеров компонента.
- Text – позволяет изменять текст компонента, например, заголовок окна или надпись на кнопке.
- Misc. – закладка предназначена для изменения таких свойств компонента как enable, visibility. Также содержатся команды для посылки событий типа maximize, minimize.
- API Message – закладка предназначена для послылки компоненту всевозможных событий.
Managed Spy (Microsoft, .NET 2.0)
Это бесплатный инструмент, написанный Benjamin Wulfe, участвовавшим в разработке Visual Studio, дизайнера Windows Forms, и ряда классов для Framework и Compact Framework. Скачать ManagedSpy можно здесь. Сразу после старта в левой части окна отображаются процессы с managed кодом, а справа – свойства выбранного процесса или его дочернего элемента.
В панели свойств отображаются свойства выбранного контрола, где их можно не только просматривать, но и менять (в отличие от Spy++). На рисунке ниже показан результат изменения свойства BackColor для невидного в рантайме PictureBox.
Есть функция, позволяющая на исследуемом окне подсветить исследуемый контрол (аналогично команде Highlight из Spy++). Для этого в меню View вызовите команду Show Window. В общем-то, простой и удобный использовании инструмент, но, к сожалению, не на всех окнах ManagedSpy работает. На простых все ОК, а вот на сложных иногда дает сбои. По крайней мере, у себя в проекте я им воспользоваться не смог. Более подробное описание ManagedSpy можно найти в статье в MSDN Magazine.
WfSpy (.NET 1.0, .NET 1.1)
Инструмент написан Rama Krishna Vavilala. Распространяется бесплатно и исходниками, которые прилагаются к его статье на CodeProject. Статья доступна вот здесь. К ней прилагается вариант, скомпилированный для .net 1.0. но для работы под .net 1.1 достаточно его просто перекомпилировать в VS 2003. В целом по внешнему виду очень похож на ManagedSpy. Сразу после старта в центральной части окна отображаются процессы с managed кодом. Чтобы посмотреть свойства заинтересовавшего компонента надо нажать кнопку Details. После чего откроется окно со списком свойств выбранного компонента, где можно как просматривать, так и изменять свойства компонента.
Заключение
Как видно из этого небольшого обзора, большинство инструментов достаточно просты и работа с ними интуитивно понятна. Самый сложный в использовании – это Spy++, однако, он, пожалуй, и самый функциональный. В статье приведены четыре инструмента, с другими мне сталкиваться не приходилось, так что если вы знакомы с каким-либо еще подобным инструментом - пожалуйста, напишите об этом в комментариях.
Комментарии
http://www.acorns.com.au/Projects/Hawkeye/
Довольно удобная надо сказать.
TestComplete имеет очень подробное дерево с процессами окнами и прочими внутренними параметрами. Кажется позволяет "дергать" методы и свойства. Возможно он занял приличное место на пъедестале.
Простой деревенский программист.
еще есть хорошая программка enable buttom, которая при запуске автоматически делает кнопки открытых окон доступными для нажатия.