我正在查看 MTA 线程调用的一些代码,使用它们的线程 ID 调用 EnumThreadWindows 并寻找具有特定类名的 Window。该窗口由 STA COM 对象显式创建,目的是将 MTA 线程与自身绑定。
我确信当只有一个 STA 对象(因此只有一个窗口)时,这很有效;但是,在这些窗口中有 8 个的情况下,并且因为这些是非 GUI MTA 线程,我想知道这些线程如何与特定窗口相关联。我们不创建这些,它们是 Internet Explorer 中与异步可插入协议处理相关的线程池的一部分。
除非我错过了一些“魔法”,否则我会认为 EnumThreadWindows 调用会导致进程中的所有窗口都被枚举,因为线程是非 GUI 线程。
我已经对此进行了一些初步探索;然而,这些操作在我们的代码中发生的场景相当复杂,并不适合这一点。
EnumThreadWindows 的枚举行为解释是否比我们在 MSDN 中看到的更详细?