Что нового

Как определить окно, чье название заключено в []?

keewee1

Новичок
Сообщения
6
Репутация
0
Суть проблемы в следующем, имею несколько идентичных окон, с тутулом вида [x]Окно 1[x], [x]Окно 2[x] и тд. Как сделать, чтобы окно опеределялось след командой:
WinExists ("[x]Окно 1[x]") ?
я так понимаю проблема в квадратных скобках, буду признателен за помощь.
ps: заранее извиняюсь за глупую тему, новичек в автоит.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
If WinExists("[x]Окно 1[x]") Then MsgBox(0, 'Проверка', 'Окно существует')


Попробуй использовать класс окна вместо названия.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Не вижу проблемы со скобками:

Код:
GUICreate("[x]Окно 1[x]", 300, 200)
GUISetState(@SW_SHOW)

MsgBox(64, 'Title', WinExists("[x]Окно 1[x]"))



Добавлено:
Сообщение автоматически объединено:

keewee1 [?]
при попытке написать в квадрадных скобках в сообщении получается белеберда
На форуме есть тег nobbc (или просто no):

Код:
[nobbc][x]Окно 1[x][/nobbc]

Результат:
[x]Окно 1[x]
 
Автор
K

keewee1

Новичок
Сообщения
6
Репутация
0
2Zaramot:
класс не катит, у окон класс одинаковый.
2CreatoR:
судя по всему проблема именно в квадратных скобках
Код:
if WinExists("[x]Окно 1[x]") then 
WinActivate("[x]Окно 1[x]")
Sleep(1000)
ControlClick("[x]Окно 1[x]", "", "[CLASS:Button; INSTANCE:133]")
endif
if WinExists("[x]Окно 2[x]") then 
WinActivate("[x]Окно 2[x]")
Sleep(1000)
ControlClick("[x]Окно 2[x]", "", "[CLASS:Button; INSTANCE:133]")
endif

вот чего собственно хочу добиться, скрипт определяет, существует ли окно, и если существует должен клацнуть по определенной кнопке. но т.к окно не определяется, то и кнопка не клацается. окон больше чем одно (одно и тоже преложение, запущенное через сэндбокс (песочницу)), они идентичны, отличия только в титуле и параметре хэндл, который, как я понимаю не постоянен, значит не особо подходит. [x] [x] индикатор песочницы, его собственно можно убрать тогда все будет работать так как мне нужно, но окна различить между собой уже не смогу ну или точнее не знаю как)
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Zaramot:
класс не катит, у окон класс одинаковый.

А ты попробуй заполнить поле "text" (можно увидеть видимый или не видимый текст через Autoit Window Info)

Код:
If WinExists("КЛАСС ОКНА", "ТЕКСТ") Then MsgBox(0, 'Проверка', 'Окно существует')
 
Автор
K

keewee1

Новичок
Сообщения
6
Репутация
0
в win info поле текст пустое, если я правильно тебя понял.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
keewee1 [?]
судя по всему проблема именно в квадратных скобках
Я же показал примером что нет.

вот чего собственно хочу добиться, скрипт определяет, существует ли окно, и если существует должен клацнуть по определенной кнопке. но т.к окно не определяется, то и кнопка не клацается.
А как ты определил что окно не определяется?
Ты проверь:

Код:
MsgBox(0, '', WinExists("[x]Окно 1[x]"))


Что показывает?


Добавлено:
Сообщение автоматически объединено:

Действительно, проблема есть (кстати баг кажется), извиняюсь.

Решить можно так:
Код:
WinExists("[REGEXPTITLE:\Q" & "[x]Окно 1[x]" & "\E]")



Добавлено:
Сообщение автоматически объединено:

Нет, это не баг, справка как всегда спасает:

Advanced Window Descriptions
A special description can be used as the window title parameter. This description can be used to identify a window by the following properties:

TITLE - Window title
CLASS - The internal window classname
REGEXPTITLE - Window title using a regular expression (if the regular expression is wrong @error will be set to 2)
REGEXPCLASS - Window classname using a regular expression (if the regular expression is wrong @error will be set to 2)
LAST - Last window used in a previous AutoIt command
ACTIVE - Currently active window
X \ Y \ W \ H - The position and size of a window
INSTANCE - The 1-based instance when all given properties match

Т.е [x] означает позицию окна, правда непонятно почему определяется окно при «[x]что-то...[x]».
 
Автор
K

keewee1

Новичок
Сообщения
6
Репутация
0
огромное спасибо, работает точно так, как было нужно)
если не сложно, можно в краце, что значит \E и \Q?
 
Верх