Inqsoft Window Scanner

Описывая возможности среды быстрой разработки простых приложений InqSoft Sign 0f Misery, я упомянул инструмент "Сканер окон" и обещал рассказать о нем в отдельной статье. Window scanner как раз и переводится с английского как сканер окон. Он является вполне самостоятельным многоцелевым инструментом, хотя и может использоваться в роли весьма полезного дополнительного инструмента среды s0m.

Не секрет, что весь пользовательский интерфейс Windows выстроен из множества различных окон. IWS дает возможность пользователю получить подробнейшую информацию о любом окне системы, даже если оно скрыто; позволяет узнавать и изменять размеры, положение, состояние, текст окна и другие необходимые параметры и атрибуты. Продукт обладает мощной системой поиска окон по полному или неполному тексту и/или классу окна, позволяет просматривать всю иерархию существующих в системе окон в виде дерева с возможностью получения краткой информации по каждому окну и перехода к детальному рассмотрению свойств интересующего окна. Имеются целые наборы дополнительных возможностей и инструментов, таких как: лупа- измеритель, захват изображения окна или всего экрана, просмотр и управление меню окна, отправка системных сообщений выбранному окну, управление процессом окна вплоть до ручного редактирования памяти процесса и многое-многое другое. Причем все это чудо представлено в весьма удобном и компактном виде и распространяется совершенно бесплатно.

Установка и знакомство

Скачать архив с установщиком последней версии программы можно по адресу: сайт . Размер файла лишь чуть больше мегабайта, так что даже диалапщикам бояться нечего. Установка будет происходить на русском, если только вы сами не выберете английский. Собственно, читаем и принимаем простое лицензионное соглашение, подтверждаем стандартный путь установки либо указываем свой, короче, все как обычно…

Установленную программу можно запускать с рабочего стола или соответствующей кнопкой в среде s0m, если она у вас установлена. Изначально ни одно окно не выбрано, хэндл (дескриптор) окна пуст, в поле "Текст окна" красным по серому написано: <Окно не существует>. Естественно, прежде чем просмотреть свойства окна, необходимо это окно выбрать. Сделать это можно, нажав на иконку с "прицелом" в левом верхнем углу окна программы и перетащив "прицел" на целевое окно. При перемещении "прицела" окна под ним будут выделяться рамкой. Когда нужное окно будет выделено, просто отпустите кнопку мыши для подтверждения выбора. Теперь в поле "Хэндл окна" появится его системный дескриптор, а также заполнятся доступной информацией остальные поля.

Поиск окон

Если целевое окно по каким-либо причинам нельзя выбрать "прицелом", можно воспользоваться поиском окна по маске или выбрать нужное окно в дереве окон.

Для поиска окна по тексту или классу кликните по иконке с изображением бинокля в правом нижнем углу. Откроется мастер поиска окна, в котором вы можете ввести полный текст окна или его часть, полное или неполное название класса окна, а также указать критерии поиска. Поиск может быть осуществлен среди всех окон системы, только среди дочерних окон или только среди окон верхнего уровня. Также вы можете осуществить поиск лишь среди окон того же процесса, что и текущее выбранное окно.

Для поиска окна по его полному тексту следует ввести полный текст окна в соответствующее поле. Если вы не знаете точный текст окна, то можете ввести лишь часть текста, а неизвестные вам части заменить символом "*" (звездочка). Поиск по классу окна осуществляется аналогичным образом. Если вам надо найти, к примеру, все дочерние окна системы, или же все окна процесса, оставьте в полях текста и класса только звездочки и, выбрав соответствующий критерий поиска, нажмите OK. В случае, когда найдено несколько окон, удовлетворяющих критериям поиска, будет выведен список найденных окон, из которого двойным кликом можно выбрать подходящее. При нахождении единственно верного окна его свойства будут сразу отображены в главном окне программы. Ну а если ни одного окна отыскать не удастся, будет выведено соответствующее сообщение.

Еще один способ поиска окна – это поиск его в дереве окон. Для этого нажмите кнопку "Дерево окон" в окне программы чуть правее центра. В появившемся окне будут представлены все окна системы в виде дерева окон. Здесь вы также можете осуществить поиск окна по маске или вручную отыскать нужную ветку, а в ней нужное окно.

Также, когда возможно, в нижней части окна программы отображаются дескрипторы ближайших окон, связанных с выбранным окном, кнопки краткой информации по ним и кнопки перехода к ним. Эти связи основаны на том, что окно в системе может иметь родительское окно, окно-владельца, дочерние окна. Но не будем удаляться от основной темы, просто знайте, что при необходимости можно быстро переместиться к связанному окну одним кликом. Чтобы визуально удостовериться в правильном выборе окна, можно нажать кнопку "Мерцание текущего окна" (кнопка с изображением лампочки).

Работа с окнами

Когда необходимое окно выбрано, можно начать проведение над ним желаемых действий.

Во-первых, можно изменить текст окна. Эту возможность, как ни странно, используют не только для приколов вроде замены текста кнопки "Пуск" на "Пукс". Иногда для того, чтобы убедиться, что из нескольких окон с одинаковым текстом вы выбрали именно то, которое вам требуется, можно временно изменить его текст на другой. И вообще, текст не обязательно менять. Очень часто необходимо просто скопировать текст какого-либо окна, ведь Windows позволяет копировать текст далеко не из каждого окна. За примерами далеко ходить не надо. Системные сообщения об ошибках порой содержат очень много важной информации. А как передать ее специалисту, чтобы выяснить причины ошибки? Правильно! Записать на бумажку, продиктовать по телефону… или воспользоваться возможностями IWS.

Имя класса окна, скорее всего, понадобится только программистам, которым необходимо в своем проекте осуществлять поиск окна по тексту и классу. Однако иногда и простому пользователю отображенный класс окна может помочь отличить кнопку от поля. Имя класса окна изменить нельзя не только в IWS, но и вообще. Этот параметр задается перед созданием окна в системе и остается неизменным на все время жизни окна. Его можно только скопировать.

Координаты расположения окна и его размеры можно не только просмотреть или скопировать, но и изменить. Для этого правее кнопки "Дерево окон" есть кнопка "Изменить положение и размеры окна". При нажатии на нее открывается дополнительное окно "Размеры и координаты", в котором можно задать новые координаты и размеры окна или использовать набор кнопок быстрого позиционирования.

Для получения подробных сведений о дополнительных параметрах окна (процедура окна, стили окна, идентификатор управляющего элемента и т.п.) и их изменения предусмотрена кнопка "Дополнительная информация об окне" с изображением трехмерной прописной латинской буквы i. Однако следует помнить, что некорректное изменение некоторых из этих параметров может повлечь за собой серьезные сбои системы. Будьте осторожны!

С той же осторожностью следует отправлять сообщения окну. Опытному программисту вряд ли стоит бояться обычной или расширенной отправки сообщений. Но простому пользователю я бы настоятельно рекомендовал серьезно почитать документацию для разработчиков, прежде чем баловаться с отправкой малознакомых сообщений окнам системы.

Дополнительные панели

В нижней части окна программы присутствуют кнопки, открывающие и скрывающие соответствующие дополнительные панели (Меню, Управление, Процесс, Сообщения, Инструменты).
Панель управления "Меню" может использоваться только для окон, имеющих меню (за исключением окна проводника). Для такого окна в дополнительной панели будет отображено дерево оконного меню. Чтобы просмотреть параметры элемента меню, следует просто выделить соответствующий элемент кликом левой кнопки мыши. Для управления пунктами (элементами) меню необходимо открыть дополнительную вкладку "Управление". Там вы сможете активировать и деактивировать пункты меню, устанавливать и снимать метки и даже удалять пункты меню.

Панель "Управление" содержит кнопки управления состоянием выбранного окна. Здесь можно свернуть окно, восстановить, распахнуть на весь экран, закрыть окно, закрыть через команду системного меню. Также можно переключить такие состояния окна, как: видимо/невидимо, активно/неактивно; установить/снять статус "поверх всех окон".

Панель "Процесс" рассчитана на опытных пользователей, имеющих представление о процессах. Здесь можно изменить приоритет процесса выбранного окна, принудительно завершить процесс, изменить приоритет потока окна, заморозить и разморозить поток, принудительно завершить поток. Ну и, конечно, здесь присутствует кнопка для запуска редактора памяти процесса. Внимание! Баловство с редактором памяти процесса может привести к большим неприятностям, так что, как говорится - "Не влезай, убьет!".

Про панель "Сообщения", как и про кнопку "Расширенная отправка сообщений" я уже высказался выше. Программистам здесь должно быть все ясно, а непрограммистам эта панель вряд ли чем-либо поможет.

Панель "Инструменты" предлагает вам возможности пяти весьма полезных инструментов.

"Сканер toolbar'ов" позволяет получать информацию об элементах панели инструментов, активировать, деактивировать и удалять кнопки на этой панели. Панель инструментов, если кто не знает – это панель с кнопками для быстрого осуществления стандартных действий, вроде той, что обычно висит в проводнике под меню. Для того чтобы работать с такой панелью в IWS, необходимо выбрать окно панели, открыть Сканер toolbar'ов, нажать в нем кнопку "Просканировать Toolbar". Если ничего не появилось, значит, вы выбрали неподходящее окно.

"Захват цвета с экрана" укажет вам точный код цвета выбранной точки экрана. Как использовать? Жмем левой кнопкой мыши на изображение пипетки и, не отпуская кнопку, выбираем нужную точку на экране, после чего кнопку мыши можно отпустить. Также данный инструмент отображает точные координаты выбранной точки.

"Захват изображения с экрана" умеет делать снимки выбранного окна или всего экрана целиком. Можно сфотографировать окно полностью или только его клиентскую часть. Присутствует выбор глубины цвета и возможность сохранения изображения в форматах bmp, gif, jpg и png.

"Универсальный захват данных" позволяет получить текстовые данные из нестандартных окон классов Edit, ListBox, ComboBox, ComboBoxEx и TreeView. Присутствует возможность выбора способа отображения древовидной иерархии, если таковая присутствует.

"Лупа-измеритель" определяет координаты положения курсора относительно левого верхнего угла экрана, относительно левого верхнего угла выбранного окна и относительно левого верхнего угла клиентской области выбранного окна. Для того чтобы скопировать координаты выбранной точки, следует, нажав и удерживая Ctrl, кликнуть по соответствующей кнопке окна лупы-измерителя. Для измерения расстояния между двумя точками экрана включите режим измерения расстояний между точками, наведите курсор на первую точку и нажмите Shift для обнуления расстояния. После этого, наведя курсор на вторую точку, удерживайте Ctrl, чтобы заморозить измеритель и скопировать требуемые координаты в буфер кликом по соответствующей кнопке лупы-измерителя. Для изменения точности измерения можно настроить лупу на увеличение от 1x до 10x.

Заключение

Вот с такой замечательной программой мы сегодня познакомились. Не стану делать за вас какие-либо выводы - пусть каждый сам решает для себя степень полезности данного продукта. К сожалению, насколько мне известно, дальнейшая разработка IWS приостановлена, однако есть шанс, что автор еще прикрутит к и без того навороченной программе пару-тройку уникальных инструментов в будущем.

Напомню, что ни автор программы, ни автор статьи не несут никакой ответственности за любые возможные последствия, связанные с использованием или не использованием рассмотренного в данной статье продукта.

BarMentaLisk, q@sa-sec.org SASecurity gr.


Компьютерная газета. Статья была опубликована в номере 12 за 2009 год в рубрике soft

©1997-2024 Компьютерная газета