如何点击一个“窗格”使用UI自动化库?(How to click on a “pane” using

2019-09-23 06:10发布

我们有,我需要点击一个窗格中的应用程序。 我试着用下面的代码,我用它来点击一个按钮,但它给了不支持的模式例外。

InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern); click_pattern.Invoke();

是否有任何其他方式做到这一点?

Answer 1:

即使对象是可点击的,这取决于如何点击被内部处理,你可能不一定能够使用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());


文章来源: How to click on a “pane” using UI automation library?