У меня есть следующий фрагмент кода:
LOG.Debug("Getting Invoke Pattern");
var invokePattern = (InvokePattern)myButton.GetCurrentPattern(InvokePattern.Pattern);
LOG.Debug("Clicking");
invokePattern.Invoke(); // <- boom
Приложение стороннее, кнопка нажимается. Где я написал boom
, получаю и InvalidOperationException
, трассировка стека в коде MS выглядит следующим образом:
at MS.Internal.AutomationProxies.Misc.ThrowWin32ExceptionsIfError(Int32 errorCode)
at MS.Internal.AutomationProxies.Misc.SendInput(Int32 inputs, INPUT& ki, Int32 size)
at MS.Internal.AutomationProxies.Input.SendKeyboardInputVK(Int16 vk, Boolean press)
at MS.Internal.AutomationProxies.Misc.SetFocus(IntPtr hwnd)
at MS.Internal.AutomationProxies.WindowsButton.Invoke()
at MS.Internal.AutomationProxies.WindowsButton.System.Windows.Automation.Provider.IInvokeProvider.Invoke()
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at MS.Internal.Automation.UiaCoreApi.CheckError(Int32 hr)
Выглядит так, как будто происходит сбой при попытке сфокусировать кнопку. Действительно, когда я пытаюсь «перемещаться» в приложении, я никогда не оказываюсь на кнопке. Что еще я могу попробовать?