1

我有以下代码

 #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) 

由于此代码从下拉列表中选择项目,但实际上并未设置对象引用。我怎么能用autoit做到这一点?

4

2 回答 2

0

通过“标准”控件,我猜您是指 COM 可访问的控件?

如果是这样,那么您可能需要使 COM 接口可以使用您的 .NET 控件/组件。这是一个简短的解释,一个更详细的解释。

于 2011-06-23T13:04:38.097 回答
0

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) 

做:

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

看看它是否有效。请发回更多关于究竟是什么失败的信息。使用正确的调试程序,例如: 始终检查代码中的错误。不要假设 $shcombo 是有效的等等。

于 2011-06-24T08:52:22.060 回答