Findwindow: различия между версиями
Tatikoma (обсуждение | вклад) (Новая страница: « == Описание == Поиск хендла окна по его заголовку или PID. <br>Поиск производится среди окон...») |
Tatikoma (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
== Описание == | == Описание == | ||
Поиск хендла окна по его заголовку или PID. | Поиск хендла окна по его заголовку или PID. | ||
| − | + | <br>Поиск производится среди окон верхнего уровня, т.е. функция не ведет поиск в дочерних окнах, таких как кнопка, поле ввода и т.д.. | |
| − | + | <br>Для получения хендла дочернего окна используйте функцию [[Getwindow]]. | |
| − | + | <br>Подробнее про устройство системы окон Windows вы можете прочитать в [[Оконная система Windows]]. | |
== Синтаксис == | == Синтаксис == | ||
Привязка к окну: нет. | Привязка к окну: нет. | ||
| − | + | <br>Работа со свернутым окном: да. | |
| − | FindWindow ( | + | FindWindow (<заголовок окна | PID>) |
| − | ''' | + | '''<заголовок окна>''' - полное название окна либо его часть. |
| − | + | <br>'''<PID>''' - номер идентификатора процесса. | |
| − | + | <br>Указывается только один из параметров: либо заголовок, либо PID, но не оба сразу. | |
| − | + | <br>Порядок поиска следующий: | |
:1. ищем указанную строку в качестве точного названия окон | :1. ищем указанную строку в качестве точного названия окон | ||
:2. в качестве класса окон | :2. в качестве класса окон | ||
| Строка 58: | Строка 58: | ||
[[Getwindow]] | [[Getwindow]] | ||
| − | + | <br>[[WindowFromCursor]] | |
| − | + | <br>[[WindowFromPoint]] | |
| − | + | <br>[[Set windowpos]] | |
| − | + | <br>[[Workwindow ]] | |
== История развития == | == История развития == | ||
'''2.14''' | '''2.14''' | ||
| − | + | <br>Добавил функцию: | |
| − | 'FindWindow ( | + | 'FindWindow (<заголовок окна | PID>)' |
Возвращает хендл окна, необходимый предыдущей команде. Заголовок окна следует указывать полностью, с соблюдением регистра символов. Если нужное окно не найдено, то регистронезависимо ищем указанную строку в начале названия всех окон. Поиск в скрытых окнах зависит от состояния переключателя "Показывать все окна". если опять ничего не нашли, то считаем, что указан PID процесса и ищем первое попавшееся окно этого процесса. | Возвращает хендл окна, необходимый предыдущей команде. Заголовок окна следует указывать полностью, с соблюдением регистра символов. Если нужное окно не найдено, то регистронезависимо ищем указанную строку в начале названия всех окон. Поиск в скрытых окнах зависит от состояния переключателя "Показывать все окна". если опять ничего не нашли, то считаем, что указан PID процесса и ищем первое попавшееся окно этого процесса. | ||
'''2.20''' | '''2.20''' | ||
| − | + | <br>Добавил в 'findWindow' возможность искать по классу окна | |
| − | + | <br>Добавил в 'findWindow' возможность искать в середине названий всех окон. Порядок поиска следующий: | |
:1. ищем указанную строку в качестве точного названия окон | :1. ищем указанную строку в качестве точного названия окон | ||
:2. в качестве класса окон | :2. в качестве класса окон | ||
| Строка 81: | Строка 81: | ||
'''2.21''' | '''2.21''' | ||
| − | + | <br>Отключил вывод в лог 'findWindow' каким способом найдено окно, до лучших времен. | |
'''2.30''' | '''2.30''' | ||
| − | + | <br>Функция 'findwindow', вызванная без параметров (но со скобками) вернет хэндл активного окна. | |
| − | + | <br>Добавил в 'findwindow' поиск по имени процесса. | |
| − | + | <br>Если в качестве приемника в команде 'findwindow' указан массив, то записываем в него хендлы и имена ВСЕХ окон, в заголовке которых содержится указанная строка, или процессов, полностью совпадающих с указанным. Регистрозависимо. | |
set %arr FindWindow (World of Warcraft) | set %arr FindWindow (World of Warcraft) | ||
'''2.39''' | '''2.39''' | ||
| − | + | <br>Исправил функцию 'findwindow'. Ничего не находила при нажатых клавишах "Alt+Tab". | |
| − | + | <br>Исправил ошибку в команде 'set %arr findwindow (caption)', возникающую при наличии в найденных "caption" символов '|' и '/'. | |
[[Категория:Окна]] | [[Категория:Окна]] | ||
Текущая версия на 10:35, 28 августа 2019
Описание
Поиск хендла окна по его заголовку или PID.
Поиск производится среди окон верхнего уровня, т.е. функция не ведет поиск в дочерних окнах, таких как кнопка, поле ввода и т.д..
Для получения хендла дочернего окна используйте функцию Getwindow.
Подробнее про устройство системы окон Windows вы можете прочитать в Оконная система Windows.
Синтаксис
Привязка к окну: нет.
Работа со свернутым окном: да.
FindWindow (<заголовок окна | PID>)
<заголовок окна> - полное название окна либо его часть.
<PID> - номер идентификатора процесса.
Указывается только один из параметров: либо заголовок, либо PID, но не оба сразу.
Порядок поиска следующий:
- 1. ищем указанную строку в качестве точного названия окон
- 2. в качестве класса окон
- 3. в начале названия окон
- 4. в середине названий окон
- 5. в качестве 'pid' окна
Если в качестве приемника указана числовая переменная, то будет найдено последнее активное окно с заданным заголовком.
Set #a FindWindow (Lineage II)
Если в качестве приемника указан массив, то будут найдены все окна с заданным заголовком.
Set %a FindWindow (Lineage II)
При этом %a [1 1] - это будет хендл последнего активного окна, %a [2 1] - предпоследнего, %a [3 1] и т. д. Количество найденных окон можно узнать с помощью функции: size(%a).
Примеры
// Пример 1 set #handleWin findwindow (Lineage II) set workwindow #handleWin // UOPilot привяжется к последнему активному окну Lineage 2.
// Пример 2
// Если надо найти все окна с одинаковым заголовком.
// Для примера: запускаем несколько калькуляторов.
set %handle findwindow ("Калькулятор")
msg Найдено окон: size(%handle)
for #i 1 size(%handle)
msg %handle[#i 1] //выводим в сообщение все хендлы поочереди
end_for
End_script
// Пример 3
// Нажать 1 во всех окнах Lineage2
set %handle FindWindow ("Lineage2") // найти все окна с именем Lineage2
log Найдено окон: size(%handle)
for #i 1 size(%handle) // цикл
set workwindow %handle [#i 1] // сделать окно рабочим
log Текущее рабочее окно: %handle [#i 1]
send 1 // нажать 1
end_for
End_script
Смотрите также
Getwindow
WindowFromCursor
WindowFromPoint
Set windowpos
Workwindow
История развития
2.14
Добавил функцию:
'FindWindow (<заголовок окна | PID>)'
Возвращает хендл окна, необходимый предыдущей команде. Заголовок окна следует указывать полностью, с соблюдением регистра символов. Если нужное окно не найдено, то регистронезависимо ищем указанную строку в начале названия всех окон. Поиск в скрытых окнах зависит от состояния переключателя "Показывать все окна". если опять ничего не нашли, то считаем, что указан PID процесса и ищем первое попавшееся окно этого процесса.
2.20
Добавил в 'findWindow' возможность искать по классу окна
Добавил в 'findWindow' возможность искать в середине названий всех окон. Порядок поиска следующий:
- 1. ищем указанную строку в качестве точного названия окон
- 2. в качестве класса окон
- 3. в начале названия окон
- 4. в середине названий окон
- 5. в качестве 'pid' окна
Добавил в 'findWindow' вывод в лог каким способом найдено окно.
2.21
Отключил вывод в лог 'findWindow' каким способом найдено окно, до лучших времен.
2.30
Функция 'findwindow', вызванная без параметров (но со скобками) вернет хэндл активного окна.
Добавил в 'findwindow' поиск по имени процесса.
Если в качестве приемника в команде 'findwindow' указан массив, то записываем в него хендлы и имена ВСЕХ окон, в заголовке которых содержится указанная строка, или процессов, полностью совпадающих с указанным. Регистрозависимо.
set %arr FindWindow (World of Warcraft)
2.39
Исправил функцию 'findwindow'. Ничего не находила при нажатых клавишах "Alt+Tab".
Исправил ошибку в команде 'set %arr findwindow (caption)', возникающую при наличии в найденных "caption" символов '|' и '/'.