Программы для работы с окнами приложений
Программы для работы с окнами приложений
В процессе разработки программ, а также их исследования, очень часто приходится работать с окнами приложений на уровне системы. То есть просматривать или менять стили окон, передавать или отслеживать сообщения и уведомления, обрабатывать другие параметры окон. У меня накопилась небольшая подборка программ, значительно облегчающих выполнение таких задач, и сегодня я подготовил обзор своего инструментария.
Скриншот программы Microsoft Spy++
Классика жанра и один из первых инструментов для работы с окнами - Microsoft Spy++ от одноименной корпорации. Является частью Visual Studio, но вполне может запускаться как самостоятельное приложение. Microsoft Spy++ позволяет просматривать список и свойства окон приложений, менять их свойства, а главное - перехватывать сообщения. Несмотря на почтенный возраст, прекрасно работает в современных системах. На всякий случай выложу несколько версий программы.
Скриншот программы Winspector
Winspector - популярный инструмент среди пользователей AutoHotkey. В удобном интерфейсе отображается список окон и всех их элементов, просмотреть или поменять их свойства и атрибуты, любому окну можно отправить сообщение или установить перехватчик, чтобы отслеживать все сообщения, поступающие окну. Со своими задачами программа справляется неплохо, но периодически возникают косяки при формировании древовидного списка окон. К большому сожалению, разработка Winspector прекращена и офсайт недоступен. Скачать последнюю из выпущенных версий Winspector можно по ссылке ниже.
Скриншот программы Window Detective
Window Detective, судя по всему, можно называть полноправным преемником Winspector. Очень похожий интерфейс, те же возможности. Но зато нет ошибок своего предшественника и добавлено много полезных функций. Скачать последнюю версию можно с офсайта.
Скриншот программы Aezay Window Hacker
Aezay Window Hacker - современный и очень удобный инструмент для мониторинга окон. Кроме стандартный функций поиска, просмотра и модификации окон, также позволяет отправлять окну любые сообщения с любыми параметрами через SendMessage или PostMessage и просматривать результат отправки. Свежую версию всегда можно скачать с офсайта, но на всякий случай сохраню и у себя.
Скриншот программы WinCheat
WinCheat позволяет выбрать любое окно любого работающего приложения и просмотреть очень подробную информацию о нем. В отличие от множества подобных программ, показывает гораздо больше информации, например, параметры шрифта или тип кодировки окна. Также предоставляет очень удобные инструменты, например, редактор стилей, увеличительное стекло и сохранение скриншота окна в файл. Скачать можно с офсайта или по ссылке ниже.
Скриншот программы WinSpy++
WinSpy++ немного похожа на предыдущую программу (да и на многие другие из этой статьи). Написана на С и распространяется вместе с исходниками, так что разработчики могут посмотреть на использованные там приемы. Офсайт недоступен, программа очень давно не обновлялась. Последнюю версию WinSpy++ можно скачать отсюда.
Скриншот программы WinSpy
WinSpy основан на идеях упомянутого выше WinSpy++, но написан на AutoHotkey. В дополнение к функционалу оригинального WinSpy++ дает возможность вытягивать содержимое списков, работать с деревом системных окон, включать и отключать элементы, а также выполнять другие задачи. Есть версии как для 32-битных, так и для 64-битных систем. Скачать можно с офсайта или по ссылке ниже.
Скриншот программы WndViewer
WndViewer - утилита от Twister, позволяющая не только просматривать, изменять атрибуты, перемещать и закрывать окна, но и работать с процессами, в том числе и системными. Это, по задумке автора, что позволяет легче искать и обезвреживать трояны и руткиты. Но из-за использования в программе неподписанного драйвера, WndViewer практически полностью неработоспособен на современных системах. Да и на тестовой машине с Windows XP периодически валит систему в BSOD. Для коллекции сгодится, но особых надежд на WndViewer возлагать не стоит.
Скриншот программы Window Hack
Window Hack - утилита, показывающая свойства выбранного окна и позволяющая выполнить с ним основные действия: скрыть, показать, отправить сообщения и т.п. Написана на чистом Ассемблере и распространяется вместе с исходниками, что является ее основной ценностью. По функционалу ничем особенным не отличается.
Скриншот программы InqSoft Window Scanner
InqSoft Window Scanner - вспомогательная утилита от программы InqSoft Sign 0f Misery. Позволяет просматривать и управлять окнами и объектами, связанными с ними: процессами, потоками, меню. Интерфейс почти весь из иконок и картинок, это уже на любителя. Но функционал действительно богатый. К сожалению, проект закрыт, офсайт также недоступен.
Скриншот программы Property Edit
Property Edit предназначена в первую очередь для программистов на Delphi. Кроме показа типовых свойств окна, пытается определить компоненты, с помощью которых они сделаны. Также у Property Edit есть несколько интересных функций, например, ведение истории обработанных окон, Color Picker с распознаванием констант цвета, обработка форм VCL. Скачать можно c офсайта или по ссылке ниже.
Скриншот программы WinDowzer
WinDowzer - небольшая программа моей разработки. В реальном времени показывает полезную системную информацию о диалоговом окне или элементе интерфейса, которые находятся под курсором мыши: хэндл окна, родительское окно, размер окна, название класса, стили, адреса процедур обработки, пользовательские данные, родительское приложение. Скачать последнюю версию WinDowzer можно здесь.
Скриншот программы WinID
WinID - очень мощный инструмент для получения информации об окнах и их элементах, а также об исполняемых файлах, которым эти окна принадлежат. Перечислять все возможности не вижу необходимости, они очень обширны и хорошо описаны в документации. Скачать пробную версию можно и с офсайта, но версия по ссылке ниже не требует регистрации, а также может работать со съемных носителей без всяких лишних предупреждений. В качестве бонуса я скомпилировал файл справки из отдельных файлов.
Скриншот программы WinInfo
WinInfo от известного реверсера deroko / ARTeam показывает краткую информацию об окне под курсором. Функционал, мягко говоря, небогатый, но зато в архиве есть исходники с очень неплохим примером обработчика мыши через инжект DLL во все процессы. Если перед вами стоит подобная задача, то можете с этими исходниками ознакомиться.
Скриншот программы AutoIt Window Info
AutoIt Window Info - вспомогательная утилита из комплекта AutoIt, предназначенная, в первую очередь, для работы с AutoIt, но вполне достойная как самостоятельное приложение. Показывает подробную информацию о выбранном окне или элементе управления. AutoIt Window Info есть в дистрибутиве AutoIt, отдельно можно скачать по ссылке ниже.
Скриншот программы Control Viewer
Control Viewer - альтернатива AutoIt Window Info, написанная на скриптах AutoIt. Все функции также предназначены для облегчения работы с AutoIt. Особую ценность представляют исходники, которые есть в комплекте.
Скриншот программы SendMessage
SendMessage - небольшая утилита для отправки сообщений с заданными параметрами в выбранное окно. Не самый великий шедевр софтостроения, да и функционал не столь обширен, как у конкурентов, зато открыты исходники. Скачать можно с офсайта или по ссылке ниже.
Скриншот программы Cmdow
Cmdow - единственная из известных мне консольных утилит для управления окнами приложений. С ее помощью можно искать окна, закрывать их, минимизировать или разворачивать, менять заголовки, передвигать и выполнять еще немало других задач. Очень рекомендую посмотреть примеры использования Cmdow на офсайте. Ценность также представляют исходники, которые лежат в открытом доступе. Из-за особенностей работы некоторые антивирусы опознают Cmdow как опасное приложение, но это не так. Никакого вредоносного кода там нет.
Скриншот программы Acorns Hawkeye
Acorns Hawkeye - пожалуй, единственная утилита для анализа окон, созданных компонентами .NET Framework. Вышеперечисленные инструменты не могут работать со свойствами дочерних элементов таких окон, так что Acorns Hawkeye вам пригодится. Скачать можно с офсайта или по ссылке ниже.
В этой статье я сознательно не стал описывать огромное количество однотипных утилит, вся работа которых сводится к показу списка окон с минимальными функциями типа "скрыть/показать" или "активировать/отключить". Я считаю, что для этого вполне достаточно представленных здесь инструментов.
Просмотров: 58683 | Комментариев: 39
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
АндрейК
(04.12.2022 в 23:00):
Андрей, GammaRay заморочена на версию QT (и возможно компилятору и т.п.), возможно поэтому в виде бинарников отсутствует.
Анна Балакирская
(05.07.2022 в 22:10):
Для этого есть маленькая программка, под названием Textify. Очень удобно копировать текст из форм, без выделения. Немного не по теме, однако выручает при работе с такими утилитами.
Aleksandr
(05.05.2021 в 12:37):
В Win 8.1 большая часть программ работает.
WinSpy++ 1.7 успешно решил мою задачу. Запускать от администратора.
Спасибо автору!
WinSpy++ 1.7 успешно решил мою задачу. Запускать от администратора.
Спасибо автору!
ManHunter
(17.03.2021 в 14:31):
Kemper, да, значительно лучше оригинального WinSpy++. Но он был написан на C, а тут исходник на AHK. Добавил, спасибо!
Kemper
(17.03.2021 в 07:10):
наткнулся на winSpy посвежее - похоже что на базе исходников WinSpy++ https://sourceforge.net/projects/winspyex/
Elendiar
(15.02.2021 в 20:23):
Спасибо, как раз та информацию которую искал. (использую с ahk)
makkud
(22.05.2020 в 12:03):
Спасибо за статью! Самый полный обзор во всём Интернете!
Павел
(06.08.2019 в 09:38):
Очень полезная статья.
Жалко, что для Mac OS нет подобных инструментов. Кроме selfSpy на питоне ничего не нашел, что можно было посмотреть с источниками.
Жалко, что для Mac OS нет подобных инструментов. Кроме selfSpy на питоне ничего не нашел, что можно было посмотреть с источниками.
Андрей
(07.04.2019 в 12:33):
Здравствуйте!
А есть ли подобные утилиты для исследования окон приложений написанных с использованием Qt, wxWidget и других подобных виджетов? Ни одна из описанных здесь программ ничего не видит кроме главного окна. Долгое время ищу, но все ссылки ведут на разработку GammaRay, которая распространяется только в исходниках и нет возможности её посмотреть. Причем такие инструменты есть для Unix-подобных систем, например Qt-Inspector, но для Windows - голяк. Может кому-то попадалось нечто или хотя-бы имеет возможность скомпилировать эту GammaRay.
А есть ли подобные утилиты для исследования окон приложений написанных с использованием Qt, wxWidget и других подобных виджетов? Ни одна из описанных здесь программ ничего не видит кроме главного окна. Долгое время ищу, но все ссылки ведут на разработку GammaRay, которая распространяется только в исходниках и нет возможности её посмотреть. Причем такие инструменты есть для Unix-подобных систем, например Qt-Inspector, но для Windows - голяк. Может кому-то попадалось нечто или хотя-бы имеет возможность скомпилировать эту GammaRay.
Vadim
(19.04.2018 в 07:41):
cmdow не единственная консольная тулза.
NirCmd v2.81
Copyright (c) 2003 - 2016 Nir Sofer
http://www.nirsoft.net/utils/n...2.html#using
введите в поиске слово - handle
ещё у меня были в закромах маленькие утилиты коммандной строки, которые с окнами как то взаимодействовали. если нужно очень будет, то могу выложить куда-нить. стучитесь: mitwadspamoТЯФТЯФТЯФgmail.com
NirCmd v2.81
Copyright (c) 2003 - 2016 Nir Sofer
http://www.nirsoft.net/utils/n...2.html#using
введите в поиске слово - handle
ещё у меня были в закромах маленькие утилиты коммандной строки, которые с окнами как то взаимодействовали. если нужно очень будет, то могу выложить куда-нить. стучитесь: mitwadspamoТЯФТЯФТЯФgmail.com
BarMentaLisk
(29.10.2017 в 13:30):
Отличный обзор, дядька! Единственное, верстка немного сбивает с толку: почти везде глаз ловит название тулзы, абзац с её описанием, потом смотришь на скриншот, и ... бац! скриншот-то уже от следующей тулзы, а от этой почему-то выше.
Сразу подумал, что это для мобильной версии замут, но в мобильной — еще больше бросается это в глаза.
Сорян за критику, я тебя всё равно очень уважаю, особенно за ассемблер!
Сразу подумал, что это для мобильной версии замут, но в мобильной — еще больше бросается это в глаза.
Сорян за критику, я тебя всё равно очень уважаю, особенно за ассемблер!
ManHunter
(28.04.2017 в 12:31):
Какое отношение перехватчик API имеет к окнам? Вот когда будет статья по мониторам API, тогда я обязательно эту программу упомяну. Но не здесь.
Алексей
(28.04.2017 в 12:12):
API Monitor от Rohitab // http://www.rohitab.com/apimonitor
также достоин добавления в список.
также достоин добавления в список.
ManHunter
(16.01.2017 в 10:36):
Насколько я знаю, система не предоставляет вообще никаких данных об источнике сообщения. Да и функций отправки сообщений далеко не две:
https://msdn.microsoft.com/en-...=vs.85).aspx
https://msdn.microsoft.com/en-...=vs.85).aspx
https://msdn.microsoft.com/en-...=vs.85).aspx
https://msdn.microsoft.com/en-...=vs.85).aspx
pawel97
(15.01.2017 в 22:40):
А есть такие звери, которые показывают, какой процесс посылает окну указанное сообщение? В одной проге проверка возникает при отправке окну сообщения с определённым wParam, причём в самом exe не нашлось нужного вызова SendMessage или PostMessage. В оле ставить бряки на эти функции, понятное дело, не вариант - не успеешь нажать f9, как бряк пять раз уже сработает.
ManHunter
(14.12.2016 в 16:15):
Добавил программу SendMessage.
ManHunter
(01.11.2016 в 12:31):
Добавил InqSoft Window Scanner и Acorns Hawkeye
Kemper
(24.10.2016 в 22:45):
ManHunter
(10.10.2016 в 11:16):
Добавлены WinID, AutoIt Window Info и Control Viewer.
ManHunter
(12.07.2016 в 08:01):
Уже все хорошо :)
Vladimir
(12.07.2016 в 00:12):
У вас три буквы М в названии статьи. Или не кажется?
DRON
(07.07.2016 в 21:25):
WinSpy++ вполне себе доступен по ссылке:
http://www.catch22.net/software/winspy-17
Программа действительно давно не обновляется (2012 год), но ведь половина перечисленных утилит ещё старее (есть и 2005 года).
http://www.catch22.net/software/winspy-17
Программа действительно давно не обновляется (2012 год), но ведь половина перечисленных утилит ещё старее (есть и 2005 года).
kero
(04.07.2016 в 19:11):
> к ним бы документацию, а то многие инструменты похожи на черную магию :)
Как так - а исходник к каждой, - что может быть документальнее ? :)
А хелп в архиве (или встроенный через сисменю) у тех, кто не слишком tiny ?
Ну, а некоторые - всего-навсего демонстраторы какой-либо ошибки MS/MSDN.
Впрочем, все они - с geocities.com, прикрытого еще несколько виндов тому назад, и с тех пор подправлены и подразвиты. И если что-то действительно заинтересовало - черкни на @yahoo.com (слева вверху странички), отвечу незамедлительно.
P.S. И спасибо за наводку на Сокольники, порадую человечка 6 лет :)
Как так - а исходник к каждой, - что может быть документальнее ? :)
А хелп в архиве (или встроенный через сисменю) у тех, кто не слишком tiny ?
Ну, а некоторые - всего-навсего демонстраторы какой-либо ошибки MS/MSDN.
Впрочем, все они - с geocities.com, прикрытого еще несколько виндов тому назад, и с тех пор подправлены и подразвиты. И если что-то действительно заинтересовало - черкни на @yahoo.com (слева вверху странички), отвечу незамедлительно.
P.S. И спасибо за наводку на Сокольники, порадую человечка 6 лет :)
ManHunter
(04.07.2016 в 13:35):
kero, к ним бы документацию, а то многие инструменты похожи на черную магию :)
kero
(04.07.2016 в 11:31):
Привет! Есть старая страничка с моими утилитками, которые вроде вполне в русле: все они для изучения и работы с окнами, все с нестандартным функционалом, все на masm32 с исходниками, и некоторыми пользуюсь до сих пор (htspy, extraspy, windrag). Взгляни, может что-то заинтересует собрата-ассемблерщика :) - http://www.geocities.ws/xmemor...tinyasm.html .
толькот что проверил - ёмоё, этот веб-архив позволяет войти только на главную страничку - http://www.geocities.ws/xmemor , и только потом перейти на "TINY APPS + SOURCES(masm32)" ( http://www.geocities.ws/xmemor...tinyasm.html )...
толькот что проверил - ёмоё, этот веб-архив позволяет войти только на главную страничку - http://www.geocities.ws/xmemor , и только потом перейти на "TINY APPS + SOURCES(masm32)" ( http://www.geocities.ws/xmemor...tinyasm.html )...
Михаил
(04.07.2016 в 09:16):
Спасибо за статью!
Как бы попроще закрывать окно с сообщением "Не установлен объект Capicom"? http://hkar.ru/JxTm
Как бы попроще закрывать окно с сообщением "Не установлен объект Capicom"? http://hkar.ru/JxTm
speedboy
(04.07.2016 в 04:02):
good
ManHunter
(03.07.2016 в 20:02):
Похоже, что Пинцет скопирован с WindowMan :)
Ни разу такой задачи не возникало, потому и в программе нет. Ну, будет о чем подумать в следующей версии.
Ни разу такой задачи не возникало, потому и в программе нет. Ну, будет о чем подумать в следующей версии.
wetal
(03.07.2016 в 19:01):
Есть ещё одна русская программа Пинцет.
http://purebasic.info/phpBB3ex...e.php?id=643
очень маленькая по размеру, умеет так же показывать информацию об окнах и ещё делать их прозрачными, всегда сверху, разблокировать неактивные окна, разблокировать неактивные пункты меню и т.д и т.п.
Может Вам понравится.
http://purebasic.info/phpBB3ex...e.php?id=643
очень маленькая по размеру, умеет так же показывать информацию об окнах и ещё делать их прозрачными, всегда сверху, разблокировать неактивные окна, разблокировать неактивные пункты меню и т.д и т.п.
Может Вам понравится.
addhaloka
(03.07.2016 в 19:00):
Вот ещё, может пойдёт в копилку - WindowMan by yoda/f2f: https://www.upload.ee/files/59.../WM.zip.html
Андрей
(03.07.2016 в 17:00):
Шутка.
Скажите пожалуйста как узнать instance у контрола ?
http://s1.bild.me/bilder/24041..._control.png
http://s1.bild.me/bilder/24041...control2.png
Скажите пожалуйста как узнать instance у контрола ?
http://s1.bild.me/bilder/24041..._control.png
http://s1.bild.me/bilder/24041...control2.png
ManHunter
(03.07.2016 в 15:45):
Это шутка такая? ВСЕ без исключения программы из статьи позволяют скопировать название класса окна.
Андрей
(03.07.2016 в 15:36):
Window Detective неудобен при вылавливании событий и нестабилен-виснет (сейчас проверил). Winspector отличался стабильностью.
Зря AutoIt 3 (точнее Au3Info) "забраковали" - позволяет скопировать имя класса - такого функционала больше нигде не находил (может быть плохо искал).
Зря AutoIt 3 (точнее Au3Info) "забраковали" - позволяет скопировать имя класса - такого функционала больше нигде не находил (может быть плохо искал).
ManHunter
(03.07.2016 в 14:35):
Добавил Property Edit 2.5.0.0
Rustamer
(03.07.2016 в 14:24):
Можно упомянуть чисто для коллекции утили WinLister и WinExplorer от товарища Нира Софера
Еще есть весьма полезная дотнетовая утиль Hawkeye - The .Net Runtime Object Editor https://hawkeye.codeplex.com/
Из того, что еще бывает очень полезно, так это Textify от нашего Rammichael-а. Хотя в тему статьи это может и не особо вписывается
Еще есть весьма полезная дотнетовая утиль Hawkeye - The .Net Runtime Object Editor https://hawkeye.codeplex.com/
Из того, что еще бывает очень полезно, так это Textify от нашего Rammichael-а. Хотя в тему статьи это может и не особо вписывается
brute
(03.07.2016 в 12:33):
ManHunter
(03.07.2016 в 12:00):
Этих программ достаточно. AutoIt к теме относится чуть меньше, чем никак. showin ничего уникального не делает. PropEdit вообще хз что такое, нашел что-то с таким именем под MacOS. Я могу привести еще десяток-полтора подобных утилит, но ничего нового в них не будет. Цель статьи не состоит в том, чтобы выгрести из интернетов все, что хоть на пол-шишечки касается окон. Я хотел собрать только самое удобное и полезное, или, в качестве исключения, утилиты с исходниками.
Тут почти все программы или выводят данные в EDIT, или есть кнопочка копирования.
Тут почти все программы или выводят данные в EDIT, или есть кнопочка копирования.
brute
(03.07.2016 в 11:46):
Можно ещё добавить: AutoIt 3, showin, PropEdit.
brute
(03.07.2016 в 11:35):
Спасибо за статью! Главный недостаток (для меня) многих подобных прог в том, что они не позволяют зафиксировать результат поиска - когда надо подсмотреть класс или родителя, то приходится его печатать, а хочется просто скопировать в буфер.
Добавить комментарий
Заполните форму для добавления комментария