Что нового

Выделение пункта в открытом окне

marker_mc

Новичок
Сообщения
9
Репутация
0
Добрые день. Прошу камнями не закидовать, поскольку это мой первый подобный скрипт, раньше имел дело только с VBA в экселе.
Поставил перед собой задачу автоматизаии кое каких действией и в данный моммент имею проблему выделение определённого пунта (желательно поиск по имени).

Код:
Run("C:\Dbr\Armw\Prg\armwmain.exe", "", @SW_MAXIMIZE)
WinWaitActive("Загрузка системы ...","Вход в систему")
Send("тут вводится пароль{ENTER}{ENTER}")

и дальше само окно программы, как мне в открытом окне выбрать какой либо пункт по названию.
Скриншот окна в приложении
Изначально после входа в программу выделен пунктик в левой половине окна "избранное", мне же нужно выделить в правой половине окна тот пункт который выделен на скриншоте и нажать enter.
С помощью InqSoft Window Scanner опредлил имя класса правой половинке окна - ListViewWndClass и если нужно Хэндл окна 0013022E
 
Автор
M

marker_mc

Новичок
Сообщения
9
Репутация
0
Порылся еще немного, почитал больше инфы и всё таки добился похожего ожидаемого результата добавив это в код:

Код:
WinWait("IT-Предприятие", "Главное меню")
ControlClick("IT-Предприятие", "ListViewWndClass1", "left", 2, 50, 30)

но это немножко не то что я хочу, тут идет двойной клик по указаным координатам окна, я хочу чтоб оно нашло заданное имя и тогда по нему кликнуло дважды, тоесть чтоб вместо 50, 30 стояло NAME

кто подскажет как это сделать?
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
marker_mc
Можно попробовать ControlListView, чтобы выделить пункт и ControlSend чтобы выслать "Enter".

WinWait возвращает дескриптор, который далее можно указывать вместо заголовков окна, что является точным соответствием, без указания каких либо дополнительных текстов. Смотрите в новой справке примеры в разделе окон.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Попробуй так:
Код:
ControlListView('IT-Предприятие', '', 'ListViewWndClass1', 'Select', 2)

ну или так:
Код:
$ItemName = 'Оборотно-сальдовая по ТМЦ'
$Count = ControlListView('IT-Предприятие', '', 'ListViewWndClass1', 'GetItemCount')
For $i = 0 To $Count
	$Name = ControlListView('IT-Предприятие', '', 'ListViewWndClass1', 'GetText', $i)
	If $Name = $ItemName Then ExitLoop ControlListView('IT-Предприятие', '', 'ListViewWndClass1', 'Select', $i)
Next
 
Автор
M

marker_mc

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
marker_mc [?]
Еще тут походу вопрос появился

Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


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