Что нового

клик на серии выпадающих контекстным меню окон

Smoke

Новичок
Сообщения
8
Репутация
0
Помогите решить тривиальную задачу, надо научить програму делать следующее:
208997376.jpg

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

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Smoke [?]
как работать с контекстным меню
Самое простое - через нажатия клавиш
Код:
WinWait("[class:#32768]") ; окно меню
Send("{DOWN 3}") ; выбор пункта
Send("{RIGHT}")  ; раскрытие подменю
Send("{DOWN}")   ; выбор пункта
Send("{ENTER}")  ; выполнение пункта
 
Автор
S

Smoke

Новичок
Сообщения
8
Репутация
0
InnI
спасибо!
а как осуществить первоначальное нажатие на правую кнопку мыши на чекбоксе (для появления контекстного меню) ? вроде на клавиатурах в которых более 101 клавиши, есть специальная кнопка для этого (рядом с CTRL) но незнаю как она называется, и может ли с ней работать autoit ?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Называется эта клавиша "{APPSKEY}". Но, чтобы меню появилось, нужно чтобы этот элемент имел фокус. Поэтому лучше сразу нажать правую кнопку мыши. Помогут:
Код:
MouseClick()
ControlClick()
 
Автор
S

Smoke

Новичок
Сообщения
8
Репутация
0
InnI
написал вот такое:
Код:
MouseClick ("Right", 720, 110)
Send("{DOWN 2}") ; выбор пункта "тип проблемы"
Send("{RIGHT}")  ; раскрытие подменю "линейная"
Send("{RIGHT}")  ; раскрытие подменю "магистраль"
Send("{ENTER}")  ; выполнение пункта

координаты 720, 110 не обрабатываются, стрелка просто хаотично делает движение по экрану и в месте остановки происходят все дальнейшие действия, как заставить делать MouseClick ("Right") именно на верхней строке (даже не обязательно в чекбоксе) и после обработки верхней строки как заставить перейти к следующей строке ?
PS: если бы еще инструкция на русском была :smile:

на скрине обрабатываемые опции:
209000009.jpg
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Smoke [?]
если бы еще инструкция на русском была
http://autoit-script.ru/index.php/topic,10070.0.html

Координаты у вас относительно чего? Относительно монитора? Окна? Клиентской части? За это отвечает опция
Код:
Opt("MouseCoordMode", 2) ; относительно координат клиентской области
 
Автор
S

Smoke

Новичок
Сообщения
8
Репутация
0
InnI
Развитие русской справки
спасибо скачал, буду вникать...

Координаты у вас относительно чего
координаты я снял с помощью Au3Info.exe (в комплекте autoit), она в разделе control показывает позицию finder tool (во всех 3-х coord mode - одни и теже координаты), хотя конечно пользоваться координатами не лучшее решение, нельзя ли указать номер столбца и строки напрямую ?

а как узнать координаты нужной мне строки (чекбокса) в команде: Opt("MouseCoordMode", 2) ?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Smoke [?]
нельзя ли указать номер столбца и строки напрямую ?
Можно. Изучайте GuiListView.au3 UDF.

Smoke [?]
как узнать координаты нужной мне строки
При помощи Au3Info. На вкладке "Control" свойство "ControlClick Coords". Но тогда используйте функцию
Код:
ControlClick()
и "MouseCoordMode" вам будет не важна.
 
Автор
S

Smoke

Новичок
Сообщения
8
Репутация
0
InnI
Можно. Изучайте GuiListView.au3 UDF.
он 360 килобайт размером, мне его до пенсии изучать, мне то всего надо этот скриптик написать и все, сам я не програмер просто :smile:

и не могли бы Вы пояснить смысл переменной: class:#32768 в функции WinWait ?
я вместо нее сделал так:
Код:
WinWait("TDBGridEh") ; окно меню

TDBGridEh - взял из поля Basic Control Info (Au3Info), правильно ?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Smoke [?]
всего надо этот скриптик написать и все
Так вы, похоже, разделом ошиблись. Обратитесь в стол заказов - там данные запросят, скриптик напишут и всё :smile:

Smoke [?]
смысл переменной: class:#32768 в функции WinWait
В справке очень подробно всё расписано - изучайте, если хотите сами написать.
 
Автор
S

Smoke

Новичок
Сообщения
8
Репутация
0
InnI
Так вы, похоже, разделом ошиблись. Обратитесь в стол заказов - там данные запросят, скриптик напишут и всё :smile:
спасибо! даже не видел этот раздел, пошел туда :smile:
 
Верх