Visual Studio неверное присвоение переменной

Я использую библиотеку FlaUI для автоматизации калькулятора Windows.

Поскольку Калькулятор является приложением магазина Windows, действия с окном, такие как перемещение, изменение визуального состояния и т. Д., Должны выполняться в родительском окне главного окна. При этом я столкнулся со следующей странной проблемой:

Window parent = window.Parent.AsWindow();

В то время как 'window.Parent' - это x, 'parent' по какой-то причине назначается как x.Parent (который в данном случае является рабочим столом).

Это не постоянно; иногда "родитель" назначается как рабочий стол, а иногда, как и ожидалось, калькулятор.

Я никогда раньше не видел ничего похожего на эту проблему и понятия не имею, как подойти к ней или как описать ее всего несколькими ключевыми словами для поиска решения.

Любая помощь будет оценена.

1 ответ

Основная проблема, безусловно, GetMainWindow. Это главное окно процесса. Windows довольно несовместима в главном окне процессов. Например, заставки могут давать сбой (иногда появляется заставка, иногда экран после заставки). Вы также часто получаете окна, которые даже больше не доступны. То же самое происходит с приложениями магазина, поскольку они используют этот исполняемый файл прокси для запуска. Вы можете попробовать следующее:

  1. Попробуйте использовать первое окно из процесса (app.GetAllTopLevelWindows(automation)[0])
  2. Получить окно с рабочего стола (automation.GetDesktop().FindFirst(cf=>cf.ByName("Calculator")))
  3. Используйте повторную попытку (var mainWindow = Retry.While(() => app.GetMainWindow(automation), (mw) => mw.Title != "Calculator")

Надеюсь, это поможет.

Другие вопросы по тегам