我正在用 C++ 开发一个应用程序,它使用 UIAutomation 来接收与用户交互相关的重要事件的通知。我通过调用 AddAutomationEventHandler 尝试了一个事件处理程序来侦听窗口打开的事件,但是我在退出之前停止通知和清理时遇到了问题。如果用户已启动某些应用程序,例如 Firefox,则对 RemoveAutomationEventHandler 的调用会挂起。(在这种情况下,调用 RemoveAllEventHandlers 也会挂起。)请注意,所有添加或删除事件处理程序的调用都是在同一个非 UI 线程的上下文中完成的。
注意:我在 Windows 7 和 Windows 8 上看到了这种行为。
关于为什么会发生这种情况或如何解决它的任何想法?是什么让结构改变事件与所有其他事件不同?