Что нового

[Элементы GUI] Выбор из выпадающего списка в неактивном окне

xlgrgrc

Знающий
Сообщения
91
Репутация
7
Всем здрасте.

Подскажите как выбрать опеределенный пункт из выпадающего списка в неактивном режиме.

Для чего? Сканирую документацию на работе и написал програмку сканировать на F1-F3/ Нужно постоянно менять режимы сканирования (двухстороняя, А4, А3, односторонняя) Вообщем подумал почему бы не сделать так что бы программа выбирала на те же ЭФКИ но уже в скрытом режиме.
Нажатие на кнопки получилось сразу. В вот с выпадающим списком не получилось вообще и более того я не могу даже просто на него щелкнуть. Странно.

пробовал по разному
Код:
;~ 	  ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1013,"left",1,34,12)



;~ 	ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1110,"left",1,206,30)


;~ 	  ControlCommand ("HP Scan - HP Officejet 7610 series (NET)","",1110, "ShowDropDown", True)
;~ 	  ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1110,"left",1,158,224)
;~ 	  ControlCommand('HP Scan - HP Officejet 7610 series (NET)','Стекло','I &accept the agreement','Check','')
;~ 	  ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1110,"left",1,100,25)
;~    ControlCommand ("HP Scan - HP Officejet 7610 series (NET)","",1110, "ShowDropDown", "")

ни чего не помогло... некоторые команды даже дописать не смог...

Код:
ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "", 1110, 1, "Стекло")
ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "", 1110, "1", "Стекло")

тоже не работает

Есть кто знает подскажите или ткните куда пойти чего почитать (но не в баню только ))) )
Спасибо
 

Вложения

edyapd

Осваивающий
Сообщения
380
Репутация
30
Код:
ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "",  "[CLASS:#32770; INSTANCE:1]",  "SelectString", "Стекло")
 
Автор
X

xlgrgrc

Знающий
Сообщения
91
Репутация
7
edyapd сказал(а):
Код:
ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "",  "[CLASS:#32770; INSTANCE:1]",  "SelectString", "Стекло")
НЕмного не верно сделал скрин
Код:
>>>> Control <<<<
Class:	Button
Instance:	7
ClassnameNN:	Button7
Name:	
Advanced (Class):	[CLASS:Button; INSTANCE:7]
ID:	1110
Text:	
Position:	423, 380
Size:	344, 52
ControlClick Coords:	194, 29
Style:	0x50000007
ExStyle:	0x00000004
Handle:	0x00000000000704CE
Заменил Вашу строку на

Код:
ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "",  "[CLASS:Button; INSTANCE:7]",  "SelectString", "Стекло")

Но не работает. Не выбирается строка стекло. Попробовал раз пять...
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
А разве "button" может быть с выпадающим списком? :-\
 
Автор
X

xlgrgrc

Знающий
Сообщения
91
Репутация
7
edyapd сказал(а):
А разве "button" может быть с выпадающим списком? :-\
Нет по идее. НО реально так показывает. Я поэтому и пробовал и controlclick ом нажимать и так и так... и не могу не сменить ни открыть ((( А активном окне все легко и просто... Но клик и смена идет если окно поверх других и активно... Сейчас если предидущий скан совпадает с текущим то посылаю такую команду
Код:
ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1013,"left",1,34,12)

И все работает... Но переодически нужно менять настройки и это не удобно (
 
Автор
X

xlgrgrc

Знающий
Сообщения
91
Репутация
7
InnI сказал(а):
xlgrgrc [?]
реально так показывает
Попробуйте Control Viewer или wInformer
Попробовал, вот что пишет Ваша программа.

Вложение картинка.

Далее пробую так
Код:
ControlClick ("HP Scan - HP Officejet 7610 series (NET)", "",  "[CLASS:Button; ID:1110]")
ControlClick ("HP Scan - HP Officejet 7610 series (NET)", "", 1110)

Реакции ноль. Проверяю активирую другое окно но сбоку подглядываю в неактивном что происходит. Ровным счетом ничего.
Может я чего то не понимаю почему выпадающий список а все программы показывают как кнопку.
Как вообще можно сменить этот несчастный список )))
Я почему то был уверен что это пустяк но не справился ни как )))
 

Вложения

  • 31,6 КБ Просмотры: 17

edyapd

Осваивающий
Сообщения
380
Репутация
30
Тогда возникает только одна бредовая идея. Что там на самом деле кнопка, при нажатии на которую динамически формируется выпадающий список.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Button, это рамка (BS_GROUPBOX), которую вы выделили в CV, а искомый элемент - ComboBox. В CV есть возможность сделать любой элемент GUI невидимым, сняв соответствующую галочку в списке. Сделайте Button невидимым, после этого можно будет выделить нужный элемент. Или же просто пощелкайте по элементам в списке до тех пор, пока не будет подсвечен искомый элемент.





 
Автор
X

xlgrgrc

Знающий
Сообщения
91
Репутация
7
Yashied сказал(а):
Button, это рамка (BS_GROUPBOX), которую вы выделили в CV, а искомый элемент - ComboBox. В CV есть возможность сделать любой элемент GUI невидимым, сняв соответствующую галочку в списке. Сделайте Button невидимым, после этого можно будет выделить нужный элемент. Или же просто пощелкайте по элементам в списке до тех пор, пока не будет подсвечен искомый элемент.






Да это помогло. Я о таком не знал вообще.
В итоге так и сделал. Пощелкал и нашел именно мой выпадающий список оказалось что у него ID вовсе 1086.
В итоге работают обе строки:

Код:
ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "",  1086,  "SelectString", "Стекло")

ControlCommand ("HP Scan - HP Officejet 7610 series (NET)","",1086, "ShowDropDown", "")


С той лишь разницей что нижняя открывает список а первая сразу же выбирает то что нужно. И все работает как часики.

СПАСИБО большое. Через сканер пройдет два кабинета коробок в итоге. БОльшой объект близится к завершению и эта программа просто спасение от не нужного кликанья мышкой. Спасибо.


Добавлено:
Сообщение автоматически объединено:

Выкладываю итоговую программу. Понятно, что надобности у неё мало и она заточена под мой принтер только но, кому то может понадибится или какие то элементы...

Код:
Opt("WinWaitDelay",300)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)

HotKeySet ( "{F1}" ,"_F1")
HotKeySet ( "{F2}" ,"_F2")
HotKeySet ( "{F3}" ,"_F3")
HotKeySet ( "{F4}" ,"_F4")
HotKeySet ( "{F5}" ,"_F5")
$irp = "d:\0SCAN\scan.ini"
$ir = IniRead ($irp,"main","path","-1")

If $ir = -1 Then
   $p = InputBox ("СООБЩЕНИЕ", "ВВЕДИТЕ НОМЕР АКТА")
   Sleep (300)
   IniWrite($irp,"main","path",$p)
   $ir = IniRead ($irp,"main","path","-1")
Else
   ToolTip ("Номер акта: " & $ir,800,400,"ВНИМАНИЕ!")
   Sleep (3000)
   ToolTip (" " & $ir,2000,2000)
EndIf

While 1
   Sleep (200)
WEnd

Func _F4()

   $p = IniRead ($irp,"main","path","-1")

   MsgBox (0,"ВНИМАНИЕ", "Перемещаем фото в папку d:\0. Work\08\"& $p)
	 
	  DirMove ( "d:\0SCAN\", "d:\0. Work\08\" & $p)
	  DirCreate ("d:\0SCAN\")

   $p = InputBox ("СООБЩЕНИЕ", "ВВЕДИТЕ НОВОЕ НАЗВАНИЕ АКТА")
   Sleep (300)
   IniWrite($irp,"main","path",$p)
   $ir = IniRead ($irp,"main","path","-1")

EndFunc


Func _F5()
   ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1013)
EndFunc

Func _F2()
   ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1037,"left",1,158,224)
   Sleep (100)
   ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "",  1086,  "SelectString", "Устройство подачи (двустороннее сканирование)")
   Sleep (100)
   ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1013)
EndFunc


Func _F1()
   ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1037,"left",1,158,274)
   Sleep (100)
   ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "",  1086,  "SelectString", "Устройство подачи (одностороннее сканирование)")
   Sleep (100)
   ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1013)
EndFunc

Func _F3()
   ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1037,"left",1,158,324)
   Sleep (100)
   ControlCommand("HP Scan - HP Officejet 7610 series (NET)", "",  1086,  "SelectString", "Стекло")
   Sleep (100)
   ControlClick ("HP Scan - HP Officejet 7610 series (NET)","",1013)
EndFunc


Еще раз всем спасибо за помощь!
 
Верх