我正在嘗試單擊使用調用模式的按鈕。Microsoft UI自動化:調用模式異常
InvokePattern ipAddMPButton = (InvokePattern)aeAddMPButton.GetCurrentPattern(InvokePattern.Pattern);
try
{
ipAddMPButton .Invoke();
}
catch (System.Runtime.InteropServices.COMException e)
{
// TODO
}
它拋出COMException,我想不通爲什麼?
當我運行此代碼時,該按鈕實際上被按下,功能運行良好。但之後它會停止一段時間,並拋出此異常。
另外,如果它的實際執行操作,那麼爲什麼擔心只是趕上例外,並繼續作爲流程......這是在你沒有得到堅實的解決方案的情況下 – 2014-12-01 06:26:04
我實際上有相同的在我試圖用UIAutomation操作的應用程序中的行爲。就我而言,這發生在打開Winforms對話框的Winforms按鈕上(我相信它們可能是消息框)。調用線程正好停留了1分鐘,然後拋出異常「0x80040201 - 事件無法調用任何訂戶。」我使用Inspect.exe工具測試了這些按鈕,雖然看不到異常,但它表現出類似的行爲,即在調用Invoke(儘管調用正確執行)後凍結了一分鐘。 – 2016-02-17 06:59:16
它是一個標準的Winforms按鈕還是它特別的東西?你有任何複製代碼? 0x80040201是UIA_E_ELEMENTNOTAVAILABLE,因此,它可能是一個競速條件問題,就像在應用程序中的某些代碼在所有通信結束之前,在您的UIA應用程序和目標應用程序之間的所有通信結束之前銷燬該按鈕的時間太早。 – 2016-02-19 15:57:04