IUIAutomation :: RemoveAllEventHandlers挂起

Way*_*yne 8 microsoft-ui-automation

我正在开发一个C++应用程序,它使用UIAutomation接收与用户交互相关的重要事件的通知.我通过调用AddAutomationEventHandler来侦听窗口打开的事件,尝试了通过处理程序,但是我在退出之前停止通知和清理时遇到了问题.如果用户已启动某些应用程序(如Firefox),则调用RemoveAutomationEventHandlerhangs.(在这种情况下,调用RemoveAllEventHandlers也会挂起.)请注意,添加或删除事件处理程序的所有调用都在同一个非UI线程的上下文中完成.

注意:我在Windows 7和Windows 8上看到此行为.

关于为什么会发生这种情况或如何解决问题的任何想法?是什么让结构改变事件与其他事件不同?

Eri*_*own 3

窗口打开/关闭事件通过内核 WinEvent 处理程序实现;结构更改事件涉及客户端应用程序。你的非ui线程泵消息吗?UI 自动化需要泵送消息以使跨进程通信正常工作。