Как заставить элемент управления .NET работать с Autoit, так как он может работать только с элементами управления STANDARD - PullRequest
1 голос
/ 23 июня 2011

У меня есть следующий код

 #Include <GuiComboBox.au3>
 #Include <GuiComboBoxEX.au3>
 #include <GUIListBox.au3>
 #include <GUIConstantsEx.au3>
;~#AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator 
global $hcombo = "[NAME:ctlMsgQueueCombo]"
global $hcomboclass = "[CLASS:WindowsForms10.COMBOBOX.app.0.2bf8098_r15_ad12]"
global $title = "Test Form"
global $index = 0
WinActivate ($title)
;Start test executable
Run("Z:\test\Info.Test\bin\Debug\Info.Test.exe")
sleep(6000)
controlFocus("", "", "[NAME:ctlSelector]")
controlsend("", "", "[NAME:ctlSelector]", 'QWER67')
sleep(1000)
local $shcombo = ControlGetHandle($title, "", $hcombo)
local $sText = 'TYY Processor (QWERYY980) - Q00S00'
_GUICtrlComboBox_SelectString($shcombo, $sText) 

Поскольку этот код выбирает элемент из выпадающего списка, но фактически не устанавливает объект ref.Как я могу сделать это с autoit?

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

AutoIt прекрасно работает с элементами управления .NET. .NET созданные элементы управления подпадают под категорию стандартных элементов управления. Элементы управления, такие как сделанные Java или WPF, не имеют. Доступность COM не имеет к этому никакого отношения.

Тем не менее, похоже, что в вашем коде AutoIt, возможно, есть некоторые ошибки. Я не могу точно сказать, где именно, потому что я не понимаю, что означает «но на самом деле не устанавливает объект ref».

Некоторые указатели, используйте $ title где возможно вместо пустой строки:

controlFocus($title, "", "[NAME:ctlSelector]")
controlsend($title, "", "[NAME:ctlSelector]", 'QWER67')

_GUICtrlComboBox_SelectString может работать с частичными строками. Так что вместо:

local $shcombo = ControlGetHandle($title, "", $hcombo)
local $sText = 'TYY Processor (QWERYY980) - Q00S00'
_GUICtrlComboBox_SelectString($shcombo, $sText) 

Do:

local $shcombo = ControlGetHandle($title, "", $hcombo)
local $sText = 'TYY Processor'
_GUICtrlComboBox_SelectString($shcombo, $sText) 

И посмотри, работает ли это. Пожалуйста, отправьте обратно с дополнительной информацией о том, что именно терпит неудачу. Используйте правильные процедуры отладки, например: Всегда проверяйте ошибки в вашем коде. Не думайте, что $ shcombo допустимо и т. Д.

0 голосов
/ 23 июня 2011

Под "стандартными" элементами управления я предполагаю, что вы имеете в виду COM-доступные?

Если это так, то вам, вероятно, нужно сделать так, чтобы элементы управления / компоненты .NET использовались через интерфейс COM.Вот краткое объяснение и более подробное .

...