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

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: «== Описание == '''findwindow''' - поиск хендла окна по его заголовку или PID. <br>Поиск производится...»)
 
 
Строка 1: Строка 1:
 
== Описание ==
 
== Описание ==
 
'''findwindow''' - поиск хендла окна по его заголовку или PID.
 
'''findwindow''' - поиск хендла окна по его заголовку или PID.
&lt;br>Поиск производится среди окон верхнего уровня, т.е. функция не ведет поиск в дочерних окнах, таких как кнопка, поле ввода и т.д..
+
<br>Поиск производится среди окон верхнего уровня, т.е. функция не ведет поиск в дочерних окнах, таких как кнопка, поле ввода и т.д..
&lt;br>Для получения хендла дочернего окна используйте функцию [[Getwindow (Lua)]].
+
<br>Для получения хендла дочернего окна используйте функцию [[Getwindow (Lua)]].
&lt;br>Подробнее про устройство системы окон Windows вы можете прочитать в [[Оконная система Windows]].
+
<br>Подробнее про устройство системы окон Windows вы можете прочитать в [[Оконная система Windows]].
  
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: нет.
 
Привязка к окну: нет.
&lt;br>Работа со свернутым окном: да.
+
<br>Работа со свернутым окном: да.
&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. в качестве класса окон
Строка 22: Строка 22:
 
  h = findwindow ("Lineage II")
 
  h = findwindow ("Lineage II")
 
При этом:
 
При этом:
&lt;br>h [1][1] - это будет хендл последнего активного окна
+
<br>h [1][1] - это будет хендл последнего активного окна
&lt;br>h [2][1] - предпоследнего  
+
<br>h [2][1] - предпоследнего  
&lt;br>h [3][1] - и т. д.
+
<br>h [3][1] - и т. д.
&lt;br>Количество найденных окон можно узнать с помощью: #h.
+
<br>Количество найденных окон можно узнать с помощью: #h.
&lt;br>Если окно не найдено возвращает nil.
+
<br>Если окно не найдено возвращает nil.
 
   
 
   
 
== Примеры ==
 
== Примеры ==
Строка 59: Строка 59:
  
 
[[Getwindow (Lua)]]
 
[[Getwindow (Lua)]]
&lt;br>[[Windowfromcursor (Lua)]]
+
<br>[[Windowfromcursor (Lua)]]
&lt;br>[[Windowfrompoint (Lua)]]
+
<br>[[Windowfrompoint (Lua)]]

Текущая версия на 10:35, 28 августа 2019

Описание

findwindow - поиск хендла окна по его заголовку или PID.
Поиск производится среди окон верхнего уровня, т.е. функция не ведет поиск в дочерних окнах, таких как кнопка, поле ввода и т.д..
Для получения хендла дочернего окна используйте функцию Getwindow (Lua).
Подробнее про устройство системы окон Windows вы можете прочитать в Оконная система Windows.

Синтаксис

Привязка к окну: нет.
Работа со свернутым окном: да.
Имя окна заключается в кавычки.

findwindow (<заголовок окна | PID>)

<заголовок окна> - полное название окна либо его часть.
<PID> - номер идентификатора процесса.
Указывается только один из параметров: либо заголовок, либо PID, но не оба сразу.
Порядок поиска следующий:

1. ищем указанную строку в качестве точного названия окон
2. в качестве класса окон
3. в начале названия окон
4. в середине названий окон
5. в качестве 'pid' окна
h = findwindow ("Lineage II")

При этом:
h [1][1] - это будет хендл последнего активного окна
h [2][1] - предпоследнего
h [3][1] - и т. д.
Количество найденных окон можно узнать с помощью: #h.
Если окно не найдено возвращает nil.

Примеры

--lua
local handle = findwindow ("Lineage")
if handle then    -- если окно найдено
    workwindow (handle[1][1])    -- сделать его рабочим окном
end
-- UOPilot привяжется к последнему активному окну Lineage.
--lua
local h = findwindow ("Блокнот")
if h then    -- если окно или несколько окон найдено
    for i = 1, #h do
        log (h[i][1])  -- показать в логе хендлы всех найденных окон
    end
end
--lua
-- Нажать 1 во всех окнах Lineage2 
local h = findwindow ("Lineage2")   -- найти все окна с именем Lineage2
if h then    -- если найдено
    log ("Найдено окон: " .. #h)   
    for i = 1, #h do                  -- цикл
        workwindow (h [i][1])      -- сделать окно рабочим
        log ("Текущее рабочее окно: " .. workwindow())
        send (1)                        -- нажать 1
    end
end

Смотрите также

Getwindow (Lua)
Windowfromcursor (Lua)
Windowfrompoint (Lua)