Что нового

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

XevaloO

Новичок
Обьясните пожалуйста на примере как эта штука работает!
во первых я непонял пример в хелпе
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 Гуру
Вот несколько примеров для разных редакторов и браузеров :

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

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

CreatoR

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

XevaloO

Новичок
Да я понимаю, что все везде написано, просто я исхожу из того, что если б я все понял, то оно бы работало так, как я от него ожидаю:'(
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 Гуру
XevaloO сказал(а):
как я понял функция Controlclick не имеет координат применения клика, а зачем тогда в Window Info есть такая штука как ControlClick Coords?
Координаты задаются по необходимости.
В справке написано : По умолчанию клик идет по центру .
 

CreatoR

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

XevaloO

Новичок
Я опцию эту нажал, только различий мой глаз не заметил=)
а эти цифры, да и вообще все цифры я беру из вот этих данных 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

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

CreatoR

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

XevaloO

Новичок
Ого го :laugh: ну как всегда самое важное да пропустишь=), ну все пошел вникать в енту чудо фиговину
 

joiner

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

Yashied

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

XevaloO

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

ynbIpb

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

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

vovsla

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

ynbIpb

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

decadent

Новичок
Не могу понять принцип работы 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

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

decadent

Новичок
Снова не получается нормально использовать 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]
 
Верх