我们有,我需要点击一个窗格中的应用程序。 我试着用下面的代码,我用它来点击一个按钮,但它给了不支持的模式例外。
InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern); click_pattern.Invoke();
是否有任何其他方式做到这一点?
我们有,我需要点击一个窗格中的应用程序。 我试着用下面的代码,我用它来点击一个按钮,但它给了不支持的模式例外。
InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern); click_pattern.Invoke();
是否有任何其他方式做到这一点?
即使对象是可点击的,这取决于如何点击被内部处理,你可能不一定能够使用InvokePattern进行点击。 这似乎是这里的情况。
作为替代方案,你可以使用一些代码来移动鼠标光标移到窗格并出具使用P / Invoke点击。 事情是这样的:
private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;
[DllImport("user32.dll")]
private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo);
...
...
AutomationElement paneToClick;
...
...
Cursor.Position = paneToClick.GetClickablePoint();
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new IntPtr());
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new IntPtr());