Findwindow: различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: « == Описание == Поиск хендла окна по его заголовку или PID. <br>Поиск производится среди окон...»)
 
 
Строка 2: Строка 2:
 
== Описание ==
 
== Описание ==
 
Поиск хендла окна по его заголовку или PID.
 
Поиск хендла окна по его заголовку или PID.
&lt;br>Поиск производится среди окон верхнего уровня, т.е. функция не ведет поиск в дочерних окнах, таких как кнопка, поле ввода и т.д..
+
<br>Поиск производится среди окон верхнего уровня, т.е. функция не ведет поиск в дочерних окнах, таких как кнопка, поле ввода и т.д..
&lt;br>Для получения хендла дочернего окна используйте функцию [[Getwindow]].
+
<br>Для получения хендла дочернего окна используйте функцию [[Getwindow]].
&lt;br>Подробнее про устройство системы окон Windows вы можете прочитать в [[Оконная система Windows]].
+
<br>Подробнее про устройство системы окон Windows вы можете прочитать в [[Оконная система Windows]].
  
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: нет.
 
Привязка к окну: нет.
&lt;br>Работа со свернутым окном: да.
+
<br>Работа со свернутым окном: да.
  FindWindow (&lt;заголовок окна | PID>)
+
  FindWindow (<заголовок окна | PID>)
'''&lt;заголовок окна>''' - полное название окна либо его часть.
+
'''<заголовок окна>''' - полное название окна либо его часть.
&lt;br>'''&lt;PID>''' - номер идентификатора процесса.
+
<br>'''<PID>''' - номер идентификатора процесса.
&lt;br>Указывается только один из параметров: либо заголовок, либо PID, но не оба сразу.
+
<br>Указывается только один из параметров: либо заголовок, либо PID, но не оба сразу.
&lt;br>Порядок поиска следующий:
+
<br>Порядок поиска следующий:
 
:1. ищем указанную строку в качестве точного названия окон
 
:1. ищем указанную строку в качестве точного названия окон
 
:2. в качестве класса окон
 
:2. в качестве класса окон
Строка 58: Строка 58:
  
 
[[Getwindow]]
 
[[Getwindow]]
&lt;br>[[WindowFromCursor]]
+
<br>[[WindowFromCursor]]
&lt;br>[[WindowFromPoint]]
+
<br>[[WindowFromPoint]]
&lt;br>[[Set windowpos]]
+
<br>[[Set windowpos]]
&lt;br>[[Workwindow ]]
+
<br>[[Workwindow ]]
  
 
== История развития ==
 
== История развития ==
  
 
'''2.14'''
 
'''2.14'''
&lt;br>Добавил функцию:
+
<br>Добавил функцию:
  'FindWindow (&lt;заголовок окна | PID>)'
+
  'FindWindow (<заголовок окна | PID>)'
 
Возвращает хендл окна, необходимый предыдущей команде. Заголовок окна следует указывать полностью, с соблюдением регистра символов. Если нужное окно не найдено, то регистронезависимо ищем указанную строку в начале названия всех окон. Поиск в скрытых окнах зависит от состояния переключателя "Показывать все окна". если опять ничего не нашли, то считаем, что указан PID процесса и ищем первое попавшееся окно этого процесса.
 
Возвращает хендл окна, необходимый предыдущей команде. Заголовок окна следует указывать полностью, с соблюдением регистра символов. Если нужное окно не найдено, то регистронезависимо ищем указанную строку в начале названия всех окон. Поиск в скрытых окнах зависит от состояния переключателя "Показывать все окна". если опять ничего не нашли, то считаем, что указан PID процесса и ищем первое попавшееся окно этого процесса.
  
 
'''2.20'''
 
'''2.20'''
&lt;br>Добавил в 'findWindow' возможность искать по классу окна
+
<br>Добавил в 'findWindow' возможность искать по классу окна
&lt;br>Добавил в 'findWindow' возможность искать в середине названий всех окон. Порядок поиска следующий:
+
<br>Добавил в 'findWindow' возможность искать в середине названий всех окон. Порядок поиска следующий:
 
:1. ищем указанную строку в качестве точного названия окон
 
:1. ищем указанную строку в качестве точного названия окон
 
:2. в качестве класса окон
 
:2. в качестве класса окон
Строка 81: Строка 81:
  
 
'''2.21'''
 
'''2.21'''
&lt;br>Отключил вывод в лог 'findWindow' каким способом найдено окно, до лучших времен.
+
<br>Отключил вывод в лог 'findWindow' каким способом найдено окно, до лучших времен.
  
 
'''2.30'''
 
'''2.30'''
&lt;br>Функция 'findwindow', вызванная без параметров (но со скобками) вернет хэндл активного окна.
+
<br>Функция 'findwindow', вызванная без параметров (но со скобками) вернет хэндл активного окна.
&lt;br>Добавил в 'findwindow' поиск по имени процесса.
+
<br>Добавил в 'findwindow' поиск по имени процесса.
&lt;br>Если в качестве приемника в команде 'findwindow' указан массив, то записываем в него хендлы и имена ВСЕХ окон, в заголовке которых содержится указанная строка, или процессов, полностью совпадающих с указанным. Регистрозависимо.
+
<br>Если в качестве приемника в команде 'findwindow' указан массив, то записываем в него хендлы и имена ВСЕХ окон, в заголовке которых содержится указанная строка, или процессов, полностью совпадающих с указанным. Регистрозависимо.
 
     set %arr FindWindow (World of Warcraft)
 
     set %arr FindWindow (World of Warcraft)
  
 
'''2.39'''
 
'''2.39'''
&lt;br>Исправил функцию 'findwindow'. Ничего не находила при нажатых клавишах "Alt+Tab".
+
<br>Исправил функцию 'findwindow'. Ничего не находила при нажатых клавишах "Alt+Tab".
&lt;br>Исправил ошибку в команде 'set %arr findwindow (caption)', возникающую при наличии в найденных "caption" символов '|' и '/'.
+
<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" символов '|' и '/'.