简而言之:我想使用C#在FL Studio 20中使用UI自动化。我知道那里有很多UI自动化框架。当前,我正在使用Teststack.White,但是此框架是为基于Win32,WinForms,WPF,Silverlight和SWT的应用程序而构建的。它适用于FL Studio20。这就是我的意思:
红色矩形来自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);