首页 > 解决方案 > 使用 C# 的非 WPF 或 Win32 应用程序的 UI 自动化

问题描述

简而言之:我想使用 C# 在 FL Studio 20 中使用 UI 自动化。我知道那里有很多 UI 自动化框架。目前,我正在使用Teststack.White,但这个框架是为 Win32、WinForms、WPF、Silverlight 和基于 SWT 的应用程序设计的。它适用于 FL Studio 20。这就是我的意思: 界面检查

红色矩形来自 UI 检查工具。这正是 Teststack.White 所看到的。它可以识别容器,但不能识别实际的可点击元素。现在我唯一可以点击按钮的选项是获取容器的位置,然后模拟带有偏移量的鼠标点击。但这只有在显示分辨率保持不变的情况下才有效。

所以我的问题是:是否有任何框架可以处理这些类型的 UI?有谁知道 FL Studio 使用的是什么 GUI 技术?我知道它是用 Delphi 编写的,但这就是我所知道的。

这是使用我上面提到的偏移方法单击按钮的代码(它用于不同的按钮,但代码大致相同):

TestStack.White.Application application = TestStack.White.Application.Launch(@"C:\Program Files (x86)\Image-Line\FL Studio 20\FL.exe");
this.window = application.GetWindow("FL Studio 20", InitializeOption.NoCache);

UIItemCollection coll = window.Items;
Panel itemToClick = null;

foreach (UIItem item in coll)
{
    if (item.Name.Contains("Piano roll"))
    {
        if (((Panel)item).Items.Count == 0)
        {
            itemToClick = (Panel)item;
            break;
        }
    }
}

window.Focus();
var mouse = window.Mouse;
Point p = itemToClick.Location;
p.Offset(11, 12);
mouse.Click(p);

标签: c#ui-automation

解决方案


推荐阅读