Что нового

Как работает ControlClick?

XevaloO

Новичок
Сообщения
28
Репутация
1
Обьясните пожалуйста на примере как эта штука работает!
во первых я непонял пример в хелпе
ControlClick("Untitled -", "", "MDIClient1")
ибо еслиб я все правильно понял оноб заработало! а сделал я так:
СontrolClick('Nodiatis - Free Online Multiplayer RPG - Windows Internet Explorer','','[CLASS:SunAwtCanvas; INSTANCE:1]')

иии еще вот так
СontrolClick('Nodiatis - Free Online Multiplayer RPG - Windows Internet Explorer','','[CLASS:SunAwtCanvas; INSTANCE:1]',1,285,170)
но не получил желаемого клика
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Вот несколько примеров для разных редакторов и браузеров :

ControlClick("AkelPad2 -", "", "RichEdit20A1")
ControlClick("NotePage", "", "Edit1")
ControlClick("Русское сообщество AutoIt - Главная страница - Windows Internet Explore", "", "Edit1")
ControlClick("Как работает ControlClick? - Opera AC 3.6.6 [9.64]", "", "OperaWindowClass25")

Заголовок окна и controlID (CLASSNN ) лучше всего определять специальной утилитой : Au3Info.exe , имеющейся в составе пакета Autoit
 
Автор
X

XevaloO

Новичок
Сообщения
28
Репутация
1
Спасибо за ответ, он помог мне частично разобраться, но тогда у меня возникает следующий вопрос:
как я понял функция Controlclick не имеет координат применения клика, а зачем тогда в Window Info есть такая штука как ControlClick Coords? и как ее можно использовать? ибо мне все же надо тыкнуть в конкретную точку этого обьекта.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
XevaloO [?]
функция Controlclick не имеет координат применения клика, а зачем тогда в Window Info есть такая штука как ControlClick Coords? и как ее можно использовать?
В справке разве не написано как?
 
Автор
X

XevaloO

Новичок
Сообщения
28
Репутация
1
Да я понимаю, что все везде написано, просто я исхожу из того, что если б я все понял, то оно бы работало так, как я от него ожидаю:'(
WinActivate('Nodiatis - Free Online Multiplayer RPG - Windows Internet Explorer')
WinWaitActive('Nodiatis - Free Online Multiplayer RPG - Windows Internet Explorer')
ControlClick('Nodiatis - Free Online Multiplayer RPG - Windows Internet Explorer','','SunAwtCanvas1','left',1,669,413)
по моему малому разумению оно должно кликнуть в точку с координатами Controlclick 669,413 левой кнопкой мыши 1 раз, а на практике тыкает на то, что находится под курсором, и я совсем не врубаюся почему.
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
XevaloO сказал(а):
как я понял функция Controlclick не имеет координат применения клика, а зачем тогда в Window Info есть такая штука как ControlClick Coords?
Координаты задаются по необходимости.
В справке написано : По умолчанию клик идет по центру .
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
XevaloO [?]
оно должно кликнуть в точку с координатами Controlclick 669,413 левой кнопкой мыши 1 раз, а на практике тыкает на то, что находится под курсором
А откуда берутся координаты? И ещё, в «Window Info» лучше выставить опцию «Coord Mode - Client».
 
Автор
X

XevaloO

Новичок
Сообщения
28
Репутация
1
Я опцию эту нажал, только различий мой глаз не заметил=)
а эти цифры, да и вообще все цифры я беру из вот этих данных Window info:

>>>> Window <<<<
Title: Nodiatis - Free Online Multiplayer RPG - Windows Internet Explorer
Class: IEFrame
Position: 0, 0
Size: 1280, 1024
Style: 0x170A0000
ExStyle: 0x00000000
Handle: 0x0000000000030840

>>>> Control <<<<
Class: SunAwtCanvas
Instance: 1
ClassnameNN: SunAwtCanvas1
Advanced (Class): [CLASS:SunAwtCanvas; INSTANCE:1]
ID:
Text:
Position: 157, 165
Size: 949, 763
ControlClick Coords: 671, 415
Style: 0x56000000
ExStyle: 0x00000000
Handle: 0x0000000000040938

>>>> Mouse <<<<
Position: 828, 580
Cursor ID: 0
Color: 0x828282
 
Автор
X

XevaloO

Новичок
Сообщения
28
Репутация
1
А можно ли аналогично действию функции controlclick как-то подвинуть курсор в точку? Я имею ввиду с использованием controls? Ибо в моем случае с control основанном на яве координаты и количество кликов игнорируются, и клик производится в точке нахождения курсора.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
XevaloO [?]
в моем случае с control основанном на яве координаты и количество кликов игнорируются, и клик производится в точке нахождения курсора.
О том что это приложение на Java нужно было писать сразу. Есть Java UDF, может и поможет :smile:.
 
Автор
X

XevaloO

Новичок
Сообщения
28
Репутация
1
Ого го :laugh: ну как всегда самое важное да пропустишь=), ну все пошел вникать в енту чудо фиговину
 

joiner

Модератор
Локальный модератор
Сообщения
3 046
Репутация
511
можно ли сделать ControlClick на $GUI_EVENT_MINIMIZE. чтобы было автоматическое сворачивание окна ?
в справке в GUICtrlSetOnEvent нашел пример получения ID нажатых элементов окна. кнопка для минимизирования имеет свой ID, но он не используется в ControlClick. как будто скрипт не понимает этой команды... хотя созданные кнопки успешно нажимаются..
может быть есть другие способы?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 705
Александр сказал(а):
можно ли сделать ControlClick на $GUI_EVENT_MINIMIZE. чтобы было автоматическое сворачивание окна ?
в справке в GUICtrlSetOnEvent нашел пример получения ID нажатых элементов окна. кнопка для минимизирования имеет свой ID, но он не используется в ControlClick. как будто скрипт не понимает этой команды... хотя созданные кнопки успешно нажимаются..
может быть есть другие способы?
А зачем? Используй WinSetState().
 
Автор
X

XevaloO

Новичок
Сообщения
28
Репутация
1
CreatoR сказал(а):
О том что это приложение на Java нужно было писать сразу. Есть Java UDF, может и поможет :smile:.
А нет ли по этой штуковине что-нибудь на русском? ну или не на русском, но хотя бы подробнее?
 

ynbIpb

Скриптер
Сообщения
398
Репутация
109
тут у меня тоже возник вопрос по поводу команды ControlClick
Все наверное знают Экранную клавиатуру в windows XP.
Есть необходимость нажимать на её конопки программно.
Пробовал так:
Код:
ControlClick ( "[TITLE:Экранная клавиатура; CLASS:OSKMainClass]", "", "[CLASS:N40; INSTANCE:1]")

не нажимает. Как ещё можно послать нажатие? курсором мыши тыкать не допускается.
 

vovsla

Осваивающий
Сообщения
546
Репутация
26
а зачем тыкать в экранную клаву если есть Send ( "keys", [flag] ), ControlSend ( "title", "text", controlID, "string" [, flag] ) и ControlSetText ( "title", "text", controlID, "new text" [, flag] ), ControlSetText правда уже немного из другой оперы
скачай русскую хелпу, там всё написано
 

ynbIpb

Скриптер
Сообщения
398
Репутация
109
Ну уж знаешь я не новичёг в автоите вроде как.
Я же написал "Есть необходимость"
Защита в одной игре блокирует все софтверные попытки послать нажатие своему окну. даже мышью нельзя двигать. а вот виртуальную клаву не блочит. вот хочу её заюзать, но даже кликнуть мышкой по ней не могу, так как блокируется движение мыши.
 

decadent

Новичок
Сообщения
6
Репутация
0
Не могу понять принцип работы ControlClick. Если быть точнее, то какие значения туда можно передавать?

Мне нужно вот, что:
1. Запускаю explorer.exe;
2. Дальше в строке меню нужно выбрать пункт "Файл", но что передать в ControlClick я никак не могу понять((

Вот, что делаю я:

Run("explorer.exe")
WinWaitActive("Мои документы")
ControlClick("Мои документы", "", "[ID:32768]")

Я уже много вариантов перепробывал, но этот вроде самый логичный.

Вот инфа:
>>>> Window <<<<
Title: Мои документы
Class: ExploreWClass
Position: 202, 112
Size: 863, 632
Style: 0x16CF0000
ExStyle: 0x00000100
Handle: 0x00DD03F4
>>>> Control <<<<
Class: ToolbarWindow32
Instance: 3
ClassnameNN: ToolbarWindow323
Name:
Advanced (Class): [CLASS:ToolbarWindow32; INSTANCE:3]
ID:
Text:
Position: 2, 3
Size: 807, 19
ControlClick Coords: 23, 8
Style: 0x5600D84D
ExStyle: 0x00000080
Handle: 0x00470542

>>>> Mouse <<<<
Position: 25, 11
Cursor ID: 0
Color: 0:rofl:4D0C8

>>>> ToolsBar <<<<
1: 32768 &Файл
2: 32832 &Правка
3: 32896 &Вид
4: 33136 &Избранное
5: 32960 С&ервис
6: 33024 &Справка


PS - autoIt пользуюсь только второй день.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
decadent [?]
Я уже много вариантов перепробывал, но этот вроде самый логичный.
Код:
Run("explorer.exe")
WinWaitActive("Мои документы")
ControlClick("Мои документы", "", "[CLASS:ToolbarWindow32; INSTANCE:3]","left",1, 19, 8)
 

decadent

Новичок
Сообщения
6
Репутация
0
Снова не получается нормально использовать ControlClick.
Нужно нажать на кнопку "Дополнительно" в окне "Сервис>Свойства папки>Типы файлов"

Как я понял, код такой:
Код:
ControlClick("Свойства папки", "", "[CLASS:Button; INSTANCE:5]", "left", 1, 324, 136)
Но реакции нет...
[box title=TitleBox]>>>> Control <<<<
Class: Button
Instance: 5
ClassnameNN: Button5
Name:
Advanced (Class): [CLASS:Button; INSTANCE:5]
ID: 1022
Text: Сведения для типа файла "Папка"
Position: 21, 234
Size: 365, 158
ControlClick Coords: 324, 136
Style: 0x50000007
ExStyle: 0x00000004
Handle: 0x010B0490[/box]
 
Верх