gpt4 book ai didi

c# - UI自动化和菜单项

转载 作者:太空狗 更新时间:2023-10-29 21:54:24 25 4
gpt4 key购买 nike

我正在尝试使用 .NET UI 自动化。我有一个第三方应用程序,我知道它是用 .NET 编写的,但我没有源代码。我正在启动应用程序,Process.Start("exe路径");并获取 processID然后通过

搜索主应用程序窗口
 this.MainWindow = AutomationElement.RootElement.FindFirst
(TreeScope.Children,
new AndCondition(
new PropertyCondition(AutomationElement.ProcessIdProperty, this.ProcessId),
new PropertyCondition(AutomationElement.NameProperty, InitialWindowName)
));

这是有效的发现但是在主窗口中,有一个菜单栏,里面有常见的“文件,编辑,...”

所以,下一步我选择菜单栏并展开文件菜单

var menuBar = this.MainWindow.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.LocalizedControlTypeProperty, "menu bar"));
var fileMenu = menuBar.FindAll(TreeScope.Children, Condition.TrueCondition)[0];
var expandPattern = fileMenu.GetCurrentPattern(ExpandCollapsePattern.Pattern) as ExpandCollapsePattern;
if (expandPattern.Current.ExpandCollapseState != ExpandCollapseState.Expanded)
expandPattern.Expand();
Thread.Sleep(3000);

由于"file"菜单选项是菜单栏中的第一个选项,所以这是对"file"菜单选项的扩展

现在,我要调用"file"菜单列表中的打印菜单项。

打印菜单项的名称为“打印文档 Ctrl+P”

所以我搜索

var printMenuItem = this.MainWindow.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty,"Print Document   Ctrl+P"));

但没有成功。我尝试了不同的方式,比如获取所有项目的后代并循环遍历名称以查找它们是否有“打印”但没有成功,就像这样

var list = this.MainWindow.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.LocalizedControlTypeProperty,"menu item"));
for (int i = 0; i < list.count; i++)
{
if (list[0].Current.Name.IndexOf("Print") > -1)...

最佳答案

我试过了,找到了打印菜单

var printMenu = fileMenu.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Print"));

关于c# - UI自动化和菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18157448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com