Visual Studio неверное присвоение переменной
Я использую библиотеку FlaUI для автоматизации калькулятора Windows.
Поскольку Калькулятор является приложением магазина Windows, действия с окном, такие как перемещение, изменение визуального состояния и т. Д., Должны выполняться в родительском окне главного окна. При этом я столкнулся со следующей странной проблемой:
Window parent = window.Parent.AsWindow();
В то время как 'window.Parent' - это x, 'parent' по какой-то причине назначается как x.Parent (который в данном случае является рабочим столом).
Это не постоянно; иногда "родитель" назначается как рабочий стол, а иногда, как и ожидалось, калькулятор.
Я никогда раньше не видел ничего похожего на эту проблему и понятия не имею, как подойти к ней или как описать ее всего несколькими ключевыми словами для поиска решения.
Любая помощь будет оценена.
1 ответ
Основная проблема, безусловно, GetMainWindow
. Это главное окно процесса. Windows довольно несовместима в главном окне процессов. Например, заставки могут давать сбой (иногда появляется заставка, иногда экран после заставки). Вы также часто получаете окна, которые даже больше не доступны. То же самое происходит с приложениями магазина, поскольку они используют этот исполняемый файл прокси для запуска. Вы можете попробовать следующее:
- Попробуйте использовать первое окно из процесса (
app.GetAllTopLevelWindows(automation)[0]
) - Получить окно с рабочего стола (
automation.GetDesktop().FindFirst(cf=>cf.ByName("Calculator"))
) - Используйте повторную попытку (
var mainWindow = Retry.While(() => app.GetMainWindow(automation), (mw) => mw.Title != "Calculator")
Надеюсь, это поможет.