Автоматизация пользовательского интерфейса для приложений не-WPF или Win32 с C # - PullRequest
1 голос
/ 09 мая 2019

Вкратце: я хочу использовать UI Automation в FL Studio 20 с использованием C #.Я знаю, что существует множество сред автоматизации пользовательского интерфейса.В настоящее время я использую Teststack.White , но этот фреймворк сделан для приложений на основе Win32, WinForms, WPF, Silverlight и SWT.Это работает в некотором роде для FL Studio 20. Вот что я имею в виду: UI inspection

Красный прямоугольник взят из инструмента проверки пользовательского интерфейса.И это именно то, что Teststack.White видит.Он может разобрать контейнеры, но не фактические, кликабельные элементы.Прямо сейчас единственная опция, которую я оставил, чтобы щелкнуть по кнопке, это получить местоположение контейнера и затем симулировать щелчок мыши со смещением.Но это сработает только в том случае, если разрешение экрана останется прежним.

Итак, мой вопрос: существует ли какая-либо платформа, которая может обрабатывать пользовательские интерфейсы такого типа?А кто-нибудь знает, какую технологию GUI использует FL Studio?Я знаю, что он написан на 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);
...