使用C#

时间:2019-05-09 09:26:54

标签: c# ui-automation

简而言之:我想使用C#在FL Studio 20中使用UI自动化。我知道那里有很多UI自动化框架。当前,我正在使用Teststack.White,但是此框架是为基于Win32,WinForms,WPF,Silverlight和SWT的应用程序而构建的。它适用于FL Studio20。这就是我的意思: UI inspection

红色矩形来自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);

0 个答案:

没有答案