我們有一個應用程序,我需要點擊一個窗格。我試圖使用下面的代碼,我用它來點擊一個按鈕,但它給了不受支持的模式異常。如何使用UI自動化庫單擊「窗格」?
InvokePattern click_pattern = (InvokePattern)adjust_button.GetCurrentPattern(InvokePattern.Pattern); click_pattern.Invoke();
是否有任何其他方式做到這一點?
我們有一個應用程序,我需要點擊一個窗格。我試圖使用下面的代碼,我用它來點擊一個按鈕,但它給了不受支持的模式異常。如何使用UI自動化庫單擊「窗格」?
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());
謝謝Chaser324! – Tejas
Adjust_button a Pane?無論如何,哪個控件是一個窗格? –
它基本上是一個窗格,但在應用程序中它用作按鈕(可點擊對象)... – Tejas