我刚刚用PoSH学习了一些UIA。到目前为止这么好,虽然有些基本......我已经解决了以下问题:
$np = get-uiawindow -class 'notepad' -name '*'
$npedit = $np | Get-UiaDocument
# $npedit | send-keys "abc"
$npedit | Set-UiaControlText "def"
$currtext = $npedit | Get-UiaDocumentRangeText
那么下一个显而易见的阶段是自动驾驶,即或铬......
$ie = Get-UiaWindow -class 'ieframe' -name 'environment agenc*'
$addbar = $ie | Get-UiaPane -automationid '40966' -class "rebarwindow32"
$addbar | Set-UiaControlText "news.bbc.co.uk"
但似乎班级rebarwindow32
的对象不支持“Set-UiaControlText
”。
同样,在我之前的实验中,我也尝试过自动化Windows计算器。单击按钮等很容易,但尝试读取任何计算的结果证明更具挑战性 - UIAutomationSpy将其显示为类“Static
”的UiaText对象。
所以这一切都是为了提出一个相当简单的问题 - 如何确定任何一个对象支持哪些方法 - 我不是要求如何获得计算器结果中的当前值,或者如何设置IE浏览器地址栏...但是我如何为自己找到了什么方法,我所识别的任何一个对象都支持。
到目前为止我用Google搜索的所有内容都显示了“如何做到这一点或那样”的具体示例(例如选择一个菜单,设置一些文字) - 但都非常具体。
根据下面mike z的评论,我现在尝试了GetSupportedPatterns,它(基于GetSupportedPatterns上的一些Google搜索,正是我需要的!)。
但是,如果(基于我上面的示例代码)我做$np.GetSupportedPatterns()
我得到:
Cached Current
------ -------
UIAutomation.UiaWindowPattern+Window... UIAutomation.UiaWindowPattern+Window...
UIAutomation.UiaTransformPattern+Tra... UIAutomation.UiaTransformPattern+Tra...
似乎没有告诉我什么 - 我不能拉开窗户?另外,为什么只有缓存的操作,而不是完整的列表?
由于
史蒂夫