Что нового

ControlClick не работает в окне приложения

BrainOff

Новичок
Сообщения
18
Репутация
0
>>>> Window <<<<
Title: приложение
Class: app
Position: 185, 127
Size: 1030, 796
Style: 0x14CA0000
ExStyle: 0x00000100
Handle: 0x0000000000210404

>>>> Control <<<<
Class:
Instance:
ClassnameNN:
Name:
Advanced (Class):
ID:
Text:
Position:
Size:
ControlClick Coords:
Style:
ExStyle:
Handle:

>>>> Mouse <<<<
Position: 620, 400
Cursor ID: 0
Color: 0x000000

Код:
Sleep($appwait)
		    $List = WinList('приложение')
			For $i = 1 to $list[0][0]
			   WinActivate($List[$i][1])
			   ControlClick ($List[$i][1], "", "", "left", 1, 620, 400)
			   Next


Всё остальное работает, всё делал по справочнику, просьба ткнуть в ошибку :-\
Координаты идут оконные. Тобишь будет много себе подобных окон с одинаковыми координатами.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: ControlClick не кликает

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"ControlClick не кликает" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
$List[$i][1] - здесь содержиться handle окна, а ControlClick хочет заголовок. В сс handle подставляется подобным образом:
Код:
ControlClick('[handle:'&WinWait('[Class:app]')&']', '', '','main',1,620, 400)

Также AutoIt Window Info имеет 3 режима coord mode, от коих зависят координаты, определи по каким сс хочет работать.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Думаю ТС стал жертвой ошибки в русской справке на форуме http://autoit-script.ru/autoit3_docs/functions/ControlClick.htm
В родной англоязычной справке ни слова о дискрипторах
Код:
ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )
Parameters
title - The title of the window to access.
 
Автор
B

BrainOff

Новичок
Сообщения
18
Репутация
0
Да, но не только. На зарубежном форуме тоже есть топики, где предлагают мой вариант. Но он не работает.

Теперь думаю использовать функцию
Код:
WinMove
, для того, чтобы поместить окна в одно место. Соответственно координаты каждого элемента в окнах будут одинаковыми. Или же есть более лучшие альтернативы?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
sngr [?]
$List[$i][1] - здесь содержиться handle окна, а ControlClick хочет заголовок.
Часто использую именно handle и всё работает. Вот пример для калькулятора:
Код:
$List = WinList('Калькулятор')
For $i = 1 to $list[0][0]
  WinActivate($List[$i][1])
  ControlClick($List[$i][1], "", "Button3")
Next
ControlClick(WinGetHandle('Калькулятор'), "", "Button4")

По-моему, проблема в том, что controlID пустой. А в этом случае, на сколько я понимаю, выбирается активный контрол... которого нет.

BrainOff [?]
Координаты идут оконные.
Для ControlClick() не важно, какие координаты - оконные или абсолютные. Он всегда считает от левого верхнего угла самого контрола.
 
Автор
B

BrainOff

Новичок
Сообщения
18
Репутация
0
InnI, спасибо за разъяснение.
Всё решил банально.
Opt("MouseCoordMode", 0)
 
Верх