Не знаю, поможет ли это, но: когда вы используете FromHandle, за кулисами UIAutomation отправляет сообщение WM_GETOBJECT в целевое окно, используя SendMessageTimeout или подобное. Если целевой пользовательский интерфейс заморожен или занят чем-то другим, SendMessageTimeout будет блокироваться до истечения времени ожидания; это может быть одной из причин прерывистого блока. Вы можете проверить, является ли это причиной, также используя SendMessageTimeout для отправки WM_NULL на тот же HWND, чтобы «пропинговать» его, и если это также блокирует, то вы знаете, что проблема в том, что целевой пользовательский интерфейс занят / завис.