如何使用UI自动化库单击“窗格”?

我们有一个应用程序,我需要单击一个窗格。 我尝试使用以下代码,我用它来单击一个按钮,但它给出了不支持的模式exception。

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());