Window spy ahk что это
WinGet
Возвращает идентификатор окна, идентификатор его процесса, имя процесса, список элементов управления окна, список всех окон, отвечающих заданным критериям.
Параметры
OutputVar | Имя переменной, куда будет помещён результат. |
Cmd | Смотрите список ниже. |
WinTitle | Заголовок или часть заголовка окна (метод поиска можно задавать командой SetTitleMatchMode). Если этот и следующие 3 параметра опущены, будет использовано последнее найденное окно. Чтобы задать окно через его класс, используйте конструкцию ahk_class ТочноеИмяКласса (можно посмотреть программой Window Spy). Чтобы использовать идентификатор процесса (PID), задайте параметр как ahk_pid %ПеременнаяСодержащаяPID%. Чтобы использовать идентификатор окна, задайте параметр как ahk_id %ПеременнаяСодержащаяID%. |
WinText | Подстрока из одиночного текстового элемента окна (можно посмотреть программой Window Spy). Скрытые текстовые элементы определяются, если включено определение скрытого текста (команда DetectHiddenText). |
ExcludeTitle | Окна, чей заголовок включает значение этого параметра, исключаются. |
ExcludeText | Окна, чей текст включает значение этого параметра, исключаются. |
IDLast. То же, что выше, но будет возвращён идентификатор самого нижнего из совпадающих с критериями окон. Если подходящее окно только одно, действует идентично ID. Это то же правило, по которому действует команда WinActivateBottom.
PID. Возвращает идентификатор процесса, которому принадлежит окно.
ProcessName. Определяет имя процесса (например, notepad.exe).
Count. Возвращает число существующих окон, подходящих под параметры WinTitle, WinText, ExcludeTitle и ExcludeText (вернёт 0, если таких нет). Чтобы пересчитать вообще все существующие окна, опустите все эти параметры. Скрытые окна считаются, если включено определение скрытых окон (команда DetectHiddenWindows).
MinMax. Определяет состояние окна (свёрнуто/развёрнуто). Выходная переменная пуста, если окно не найдено; иначе принимает одно из следующих значений:
-1 Окно свёрнуто (WinRestore восстановит его).
1 Окно развёрнуто (WinRestore восстановит его).
0 Окно не свёрнуто и не развёрнуто.
ControlList. Возвращает имена всех элементов управления окна. Если подходящего окна не найдено или оно не содержит элементов управления, выходная переменная будет пустой. Иначе каждое имя состоит из имени класса элемента и его порядкового номера (ClassNN), так же, как это показывает программа Window Spy.
Каждая строка списка, кроме последней, оканчивается переводом строки (`n). Для просмотра имён элементов управления по одному используйте цикл разбора, как показано в разделе с примерами ниже.
Элементы перечисляются в Z-порядке, обычно в том же порядке происходит переход между ними по нажатию клавиши TAB, если окно поддерживает такую навигацию.
Элемент управления, находящийся под курсором мыши, может распознаваться командой MouseGetPos.
ControlListHwnd [v1.0.43.06+]. То же, что выше, с тем отличием, что возвращаются оконные идентификаторы (HWND/handle) элементов управления, а не их имена (ClassNN).
Style или ExStyle. Возвращает 8-значное шестнадцатеричное число, представляющее стиль или расширенный стиль окна. Если окон, подходящих под параметры, не найдено, выходная переменная будет пустой. Следующий пример определяет, имеет ли окно стиль WS_DISABLED:
Следующий пример определяет, имеет ли окно стиль WS_EX_TOPMOST (поверх всех окон):
Смотрите список некоторых стилей в статье «Стили, используемые командами Gui и GuiControl» («Styles Usable by the Gui and GuiControl Commands»).
Примечания
Номер идентификатора окна действителен только пока существует это окно. Другими словами, если перезапустить приложение, все его окна получат уже другие идентификаторы.
Номера идентификаторов возвращаются этой командой в виде чисел (префикс «ahk_id» не включается) и сохраняются в шестнадцатеричном формате независимо от настроек, устанавливаемых командой SetFormat.
Идентификатор окна под курсором мыши можно узнать через команду MouseGetPos.
Хотя в данное время идентификаторы являются 32-битными числами без указания знака, в будущих версиях они могут стать 64-битными. Поэтому небезопасно совершать над ними числовые операции, такие как сложение, т.к. такие операции требуют, чтобы их входные строки могли быть интерпретированы как числа со знаком.
Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если только это не задано командой DetectHiddenWindows.
Это короткое вступление поможет вам начать создавать свои собственные макросы и комбинации горячих клавиш.
Туториал содержит
Создание скрипта
Создание нового скрипта:
Создайте в Блокноте или любом другом текстовом редакторе текстовый файл следующего содержания:
Примечание: программа допускает использование нескольких скриптов одновременно. При этом каждый из них будет отображаться со своей собственной иконкой в трее. Чтобы выставить свою собственую иконку в замен дефолтной, добавьте в скрипт следующую строчку:
Само-собой, адрес к иконке прописываем собственный.
Запуск программы или документа
Для запуска программы, файла, документа, ярлыка используется команда «Run», например:
Оба примера, описанные выше, являются однострочными, т.к. содержат всего одну команду. Для того же, чтобы запустить нажатием клавиш несколько команд, пишем на первой строке наши командные клавиши, далее ниже сами команды, а последней строчкой пишем Return. Например:
Если программа или документ не являются интегрированными в систему Windows, нам будет необходимо указывать полный путь к файлу, который мы собираемся запустить, например:
В вышеприведенном примере папка %ProgramFiles% является системной, поэтому конретный путь к ней можно не прописывать. Такой вариант скрипта, по сравнению с вариантом записи C:\Program Files, является более универсальным, т.к. на другом компьютере ProgramFiles может находиться например на диске D:\.
Если вам нужно, чтобы скрипт подождал, пока закроется какая-либо программа или файл, и только потом продолжил свою работу дальше, используйте вместо команды Run команду RunWait. В следующем примере, команда MsgBox не запускается до тех пор, пока не закроется Блокнот:
Эмуляция нажатий клавиш и кликов мышью
Нажатия клавиш как правило посылаются в активное в данный момент окно и для этого программой используется команда Send. В примере ниже, сочетание клавиш Win+S запускает последовательность нажатия клавиш. Обратите внимание, что окно, в которое вы «печатаете», должно быть активным.
В примере, описанном выше, все символы печатаются точно так, как прописаны в скрипте, за исключением
В следующем примере мы проиллюстрируем методы работы с несколькими наиболее часто используемыми сочетаниями специальных клавиш:
В данном примере нажатие F7 сообщает активному окну комбинацию Control+C, затем Alt+Tab, затем слово «pasted:» и завершает комбинацией Control+V.
В описании команды Send вы можете найти полный список символов, специальных клавиш и их сочетаний, используемых в программе.
Клики мышью: для того, чтобы сообщить окну клик мышью, в первую очередь необходимо определить координаты X и Y, куда вы собираетесь делать клик. Это можно определить с помощью утилит AutoScriptWriter и Window Spy, которые поставляются вместе с AutoHotkey.
Вот как это делается с помощью Window Spy: запустите Window Spy. Активируйте интересующее Вас окно. Наведите курсор мыши на искомую точку и посмотрите в окне Window Spy её координаты. Используйте эти координаты для создания эмуляции клика мыши. Например:
Примечание: координаты клика всегда считаются от левого верхнего угла активного окна. Окно при этом может находиться где угодно.
Для перемещения мыши без клика используйте команду MouseMove. Для перетаскивания или выделения мышью используйте команду MouseClickDrag.
Активация и манипулирование окнами
Для активации окна (чтобы сделать его поверх остальных окон), используйте команду WinActivate. Для определения, появилось ли искомое окно вообще, используйте команды IfWinExist или WinWait. В следующем примере мы проиллюстрируем эти команды:
Через точку с запятой даны построчные комментарии к скрипту. Всё, что написано после точки с запятой, скриптом не исполняется.
Если оно не найдено, запускается Блокнот, выполняется ожидание появления окна, и затем оно активируется. В нашем примере команда WinActivate обращена к последнему найденному окну, что позволяет нам не указывать конкретное название для каждого окна.
Вот наиболее часто используемые команды манипуляции окнами:
Используйте команду InputBox, если вы хотите, чтобы для подтверждения выбора пользователю необходимо было впечатать какое-либо слово в диалоговое окно. Команды FileSelectFile и FileSelectFolder используются для выбора пользователем файла или папки. Для более продвинутых конструкций, например для создания интерфейсной оболочки ввода данных, используйте команды семейства Gui.
Использование переменных и буфера обмена
За исключением локальных переменных в функциях, все переменные имеют глобальный характер, т.е. их содержимое может быть прочитано или изменено любой процедурой всего скрипта в целом. В дополнение к этому надо сказать, что переменные сами по себе специально не объявляются, они инициализируются автоматически.
Для демонстрации присвоения строки переменной, рассмотрим следующий пример:
Для сравнения состава переменных, состоящих из цифр и букв, сделаем следующее:
Обратите внимание, в строке выше второе упоминание переменной MyVar1 заключено в значки процентов. На этом месте будет воспроизведено содержимое переменной. Эта же техника используется для копирования содержимого одной переменной в другую, окружая разные переменные собственными значками процентов. Так, в примере, приведенном ниже, переменная MyVarConcatenated имеет значение «123 my string» (без кавычек):
Как иллюстрацию сравнения значения одной переменной с другой, рассмотрим следующий пример:
Обратите внимание, в примере, приведенном выше, использованы круглые скобки. Круглые скобки обозначают, что if-оператор содержит математическое выражение. В противном случае, строка будет читаться как «не содержащий математических выражений if-оператор», и тогда переменная ItemLimit должна заключаться в значки процентов. При этом if-оператор будет лимитирован до одного знака сравнения. Также он не сможет содержать в себе математические знаки или такие связующие, как «AND» и «OR».
Математика: для выполнения математической операции используйте оператор двоеточие-равенство (:=), чтобы присвоить результат выражения переменной, как в следующем примере:
Полный список средств для выполнения математических операций можно найти в разделе о переменных и выражениях.
Буфер обмена: переменная под названием «Clipboard» является специальной переменой, т.к. содержит в себе данные, находящиеся в буфере обмена Windows в данный момент. В нашем примере, нажав F7, вы можете посмотреть на содержание буфера обмена вашего компьютера в данную минуту:
Вид окошка, показывающего текст, содержащийся в буфере обмена, можно изменять, перемежая текущее содержимое буфера обмена с каким-либо другим текстом:
В примере, приведенном выше, значками `r и `n (акцент и буквы r и n соответственно) обозначено использование двух специальных действий: возврат каретки (как в пишущей машинке) и начало новой строки. Таким образом, эти два значка дают сигнал к началу новой строки текста, как если бы пользователь нажал в тектовом редакторе клавишу Enter.
Для добавления текста к содержимому буфера обмена (как впрочем и к любой другой переменной), используется следующий метод:
Более детальную информацию по буферу обмена и переменным можно найти в одноименных разделах.
Повторение заданных действий снова и снова
Для выполнения какой-либо задачи более одного раза подряд, используйте команду Loop. Например, заставим окошко сообщений MsgBox появиться три раза подряд:
Вы также можете вместо конкретной цифры повторов, после команды Loop выставить переменную. Такой метод используется в ситуациях, когда количество необходимых повторов определяется каким-либо другим, дополнительным фактором:
В нашем примере, Loop (циклически замкнутый участок скрипта) будет выполняться такое количество раз, какому равно значение переменной %RunCount%. Если же это значение равно нулю, тогда вся эта операция пропускается.
Loop также может самопрерываться, как только один или несколько ключевых факторов изменяются:
В примере, приведенном выше, использован метод, который иногда называют «делай. до». То есть исполнение скрипта продолжается до тех пор, пока ключевой фактор не принимает заданное значение. В нашем случае, клики на кнопке продолжаются до тех пор, пока цвет пикселя под курсором не поменяется на искомый. Сразу после этого выполнение «кольцевого» участка скрипта останавливается и скрипт продолжает выполняться со строчки, следующей сразу за замыкающей «кольцо» фигурной скобкой.
Пример, приведенный выше, иллюстрирует общий принцип использования Loop. Для более узкоспециализированных целей, вы можете использовать следующие разновидности Loop:
File-reading/writing loop: Чтение/запись файлов, циклически: Осуществляет поиск строк в текстовом файле, по одной строке за цикл. Это может быть использовано для перевода файла в другой формат или редактирования его на построчной основе. Также этот инструмент может использоваться для поиска в файле строк, отвечающих заданным параметрам.
Files and folders loop: Осуществляет поиск по файлам или папкам, по одному файлу/папке за цикл. Это позволяет проводить некие манипуляции с файлами или папками, отбираемыми по определенным критериям.
Parsing loop: Осуществляет поиск по строке, анализируя слова. Это позволяет, например, такую строку как «Red,Green,Blue» разбить на три части и затем уже работать с каждой частью в отдельности.
Registry loop: Осуществляет поиск по реестру, перебирая построчно содержимое заданного ключа реестра.
Манипуляции с файлами и папками
Для добавления текста в какой-либо текстовый файл (или для создания нового текстового файла), используйте следующий механизм:
Для перезаписи имеющегося файла, используйте команду FileDelete перед использованием FileAppend. Например:
То есть фактически вначале мы удаляем старый текстовый файл, а затем с помощью команды FileAppend создаем на его месте новый, с нужным нам содержимым.
Несколько других наиболее часто используемых команд для манипуляций с файлами и папками:
AHK: AutoIt3 Window Info Spy
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 17
1 Тема от Вася Пупкин 2011-10-16 20:21:11 (изменено: Вася Пупкин, 2011-10-16 20:22:22)
Тема: AHK: AutoIt3 Window Info Spy
В комплекте с AutoHotkey есть прога которая называется:
AutoIt3 Window Info Spy
Я не как не могу реализовать свои идеи, которые основаны на данных,
полученные из этой проги: AutoIt3 Window Info Spy.
Например:
Я открыл блокнот, тыкнул ЛКМ по заголовку блокнота,
и эта прога вывела мне данные по этому окну. (см. картинку)
Конкретно мне нужные данные я выделил красным
(Active Window Position).
Вот я хочу, к примеру, что бы у меня блокнот всегда запускался
с параметрами отображенными на картинки, т.е.:
left: 169
top: 144
width: 666
height: 359
Примерная схема скрипта (скрипт не работает):
Вопрос: Как мне сделать, что бы открылось окно с конкретно нужными мне координатами?
2 Ответ от teadrinker 2011-10-16 20:50:54
Re: AHK: AutoIt3 Window Info Spy
Но, Вася Пупкин, я ей-богу не понял, зачем сюда нужно было приплетать AutoIt3 Window Info Spy, тем более в заголовке темы. Достаточно было
Как мне сделать, что бы открылось окно с конкретно нужными мне координатами?
Освежи знания о том, как озаглавливать темы.
3 Ответ от Вася Пупкин 2011-10-17 08:03:24
Re: AHK: AutoIt3 Window Info Spy
За скрипт большое спасибо, работает!
зачем сюда нужно было приплетать AutoIt3 Window Info Spy
Я не как не могу реализовать свои идеи, которые основаны на данных,
полученные из этой проги: AutoIt3 Window Info Spy.
Создал тему с заделом на будущее
Думаю в будущем появятся ещё много вопросов по этой интересной проге.
Всё вопросы я хотел собрать в этой теме.
Так же, возможно у людей появятся вопросы по этой проге,
которые они так же могут добавить сюда.
4 Ответ от Вася Пупкин 2011-10-21 23:38:52 (изменено: Вася Пупкин, 2011-10-21 23:41:44)
Re: AHK: AutoIt3 Window Info Spy
Хочу продолжить разговор про AutoIt3 Window Info Spy.
Кароче нужно решить новую задачу.
Я этот вопрос уже задавал в этой теме:
http://forum.script-coding.com/viewtopic.php?pid=52573
Но там мне не помогли. И у меня появилась идея решить проблему другим образом.
Задача такая:
Как мне в браузере (Опера) дождать полной загрузки страницы,
и после чего выполнить какую либо функцию?
См. картинку:
1 на рисунке. Во время загрузки страницы в опере можно сделать,
что бы появлялась полоса загрузки. Она исчезает после полной загрузки страницы!
2 и 3 на рисунке. При подводе курсора к этой полосе загрузке AutoIt3 Window Info Spy выдаёт цвет и координаты.
Идея заключается в следующем:
Нужно написать скрипт который постоянно считывает цвет (2 на рисунке) в заданных координатах (3 на рисунке). И как этот цвет измениться на какой нибудь другой (т.е. полоса загрузки исчезнет) (т.е. страница в браузере полностью загрузится) то можно будет выполнить какую либо функцию, что я и просил в начале поста (Заголовок «Задача»).
Может кто нибудь мне поможет это реализовать?
Window spy ahk что это
Information that can be retrieved with WinSpy:
• Window/control handle
• Window title
• Control text
• Window/control class
• Control ClassNN
• Window/control position
• Window/control size (window and client dimensions)
• Cursor position (relative to screen, window or client)
• Window/control styles
• Window/control extended styles
• Additional styles for some controls
• Detailed style information including description
• Control ID
• Font name, size and style
• Details about the class (style, handles, etc)
• Tab order index
• Help context ID
• Window properties (data defined with SetProp)
• Menu information (strings, keyboard shortcuts, item ID)
• Scroll bar information
• List of child windows
• List of sibling windows
• Parent window
• Owner window
• Process information (executable path, version, PID, image type, etc)
The «Extra» tab can display additional information for the following control types:
• Scintilla
• Edit
• Toolbar (button ID and string)
• SysHeader32 (column text and width)
• ListView (items)
• ListBox (items)
• ComboBox (items)
• Progress bar
• Status bar (text)
• Tab control (text)
Actions that can be performed with WinSpy:
• Change window title or control text
• Change window/control position and size
• Change window/control styles
• Change the visibility of the window/control
• Enable/disable controls
• Set a window to be always on top
• Redraw the window/control
• Close the window/control
• Send Windows API messages to the window/control
• Terminate the process associated with the window
• Open the folder location of the process
• Search for a particular window/control based on multiple criteria (text, class, process)
• Display a hierarchical tree of all windows and controls in the system
• Create a screenshot of the window or control
All information of the current tab can be copied to the clipboard with the «Copy» button.
F1 displays a list of keyboard shortcuts.
Credits to James Brown (WinSpy++ developer) and Lexicos.
110.2 Ahk Window Spy 1.3.3
2) Intuitive. Logical. Versatile. Adaptable.
I only tried it briefly, but it behaves a little strangely on my system: pressing Win+Alt+W causes a screen-filling tooltip to appear, which might be normal for the window it was analyzing.
If this or any other script ever reaches the point where it is deemed superior to the current Window Spy (maybe it already is), we could have a poll or discussion about whether the script should be distributed with AutoHotkey.
Thanks for posting it.
on my system: pressing Win+Alt+W causes a screen-filling tooltip to appear, which might be normal for the window it was analyzing.
I’ve tried to determine the different reasons for the screen-filling behavior on my (Win2000) system, and have sufficiently remedied them, at least on my computer. There are likely other factors present in XP systems, as well as user-specific software configurations; plus the tooltip behavior seems to be one of the more peculiar about AutoHotkey. But i like programs with peculiarities anyway. 8)
Thanks for mentioning the possibility of distributing it along with AutoHotkey; that would be great if it did happen, and hopefully others can find more bugs or help fix them, or even improve the code. Feel free to make any modifications you see fit.
2) Intuitive. Logical. Versatile. Adaptable.