Что нового

По-разному выполняется скрипт и компилированный exe файл!?

Yegorich_555

Новичок
Сообщения
20
Репутация
0
Всем привет. Столкнулся со следующей проблемой:
Выполняю вот такую команду
ControlClick("Port 1", "", "[CLASS:ComboBox; INSTANCE:2]","left")
Ей я открываю КомбоБокс в окне Port 1 (настройки устройства в диспетчере устройств). Команда работает, когда я выполняю ее из окна редактора Autoit3. Когда же я запускаю ее посредством компилированного exe файла, то команда отрабатывает, но при этом курсор мыши (если навести его в окно Port 1) "находится в ожидании" (иконка часов), пока я не сделаю клик мыши. Как решить визуально неприятный нюанс?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
скрипт должен дождаться появления окна, его активности, а может для верности применить
Код:
WinActivate

чтобы передать фокус окну. можно даже кликнуть на окне ..а потом уже кликать на нужный элемент. можно увидеть весь код?
для кода нужно использовать теги
 
Автор
Yegorich_555

Yegorich_555

Новичок
Сообщения
20
Репутация
0
Окно активно и фокус ставится на ComboBox как следует...
Вот весь скрипт
Код:
ShellExecute("devmgmt.msc")
$wnd =("Диспетчер устройств")
WinWait($wnd)
;WinActivate($wnd, "")
ControlSend($wnd, "", "", "{TAB}")
while Not ControlTreeView($wnd, "", "SysTreeView321", "Exists", "#0|Многопортовые последовательные адаптеры|UPort 1150")
sleep(100)
WEnd
ControlTreeView($wnd, "", "SysTreeView321", "Select", "#0|Многопортовые последовательные адаптеры|UPort 1150")
ControlSend($wnd, "", "", "{Enter}")
$wnd =("Свойства: UPort 1150")
WinWait($wnd)
;WinActivate($wnd, "")
ControlSend($wnd, "", "[CLASS:SysTabControl32; INSTANCE:1]", "{right}")
Sleep(100)
ControlSend($wnd, "", "[CLASS:Button; INSTANCE:2]", "{Space}")
Sleep(100)
ControlClick("Port 1", "", "[CLASS:ComboBox; INSTANCE:2]","left",1)
Exit

Повторюсь ещё раз. При запуске из редактора скриптов все Гуд. При запуске из exe курсор мыши в ожидании....Пока я сам вручную не кликну
 

veselroger

Новичок
Сообщения
16
Репутация
3
Так как у меня такого нету, толком посмотреть не могу, как оно работает.
Как вариант, если очень напрягает, то
1)Выставить значение работы с координатами
Код:
Opt("MouseCoordMode", 2) 
Opt("PixelCoordMode", 2)

2)Переместить мышь в нужную координату элемента
Код:
$pos = ControlGetPos(Win,title,Control)
MouseMove(X,Y,0)

3)Эмулировать нажатие клавиши
MouseClick(кнопка)

Попахивает костылями, поэтому второй вариант сделать через
https://www.autoitscript.com/autoit3/docs/functions/ControlCommand.htm
Если знаешь текст. У меня вот из комбобокс текст не выдёргивается, но выбрать строку я могу.
Для выбора можно использовать либо ShowDropDown, либо GetCurrentLine

UPD: Точнее не GetCurrentLine, а SelectString. Ошибся чутка
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Автор
Yegorich_555

Yegorich_555

Новичок
Сообщения
20
Репутация
0
У меня Win7 x32 но при запуске из редактора все Гуд)
ControlCommand("Port 1", "", "[CLASS:ComboBox; INSTANCE:2]", "SelectString", "RS-422") - это команда не работает с ComboBox
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Yegorich_555 [?]
Откуда же у вас "иконка часов", если на Win7 - "зелёный бублик" :smile:

команда не работает
Нет у меня вашего оборудования - не могу проверить, но на COM1 работает нормально.

Попробуйте перед кликом в комбо поместить курсор мыши над окном.
 
Автор
Yegorich_555

Yegorich_555

Новичок
Сообщения
20
Репутация
0
Иконку часиков я повесил на курсор) А на счет курсора мыши над окном - попробую в понедельник)
 
Верх