MTA スレッドがスレッド ID を使用して EnumThreadWindows を呼び出し、特定のクラス名を持つウィンドウを探しているコードを確認しています。このウィンドウは、MTA スレッドをそれ自体に結び付ける目的で、STA COM オブジェクトによって明示的に作成されます。
これは、STA オブジェクトが 1 つしかない場合 (つまり、ウィンドウが 1 つしかない場合) にうまく機能すると確信しています。ただし、これらのウィンドウが 8 つあるシナリオでは、これらは非 GUI MTA スレッドであるため、これらのスレッドを特定のウィンドウにどのように関連付けることができるのか疑問に思っています。これらは作成しません。非同期のプラグ可能なプロトコル処理に関連する Internet Explorer のスレッド プールの一部です。
いくつかの「魔法」が欠けていない限り、スレッドは非 GUI スレッドであるため、EnumThreadWindows を呼び出すと、プロセス内のすべてのウィンドウが列挙されると思います。
私はこれについていくつかの初期調査を行いました。ただし、これらの操作がコードで発生するシナリオはかなり複雑であり、これには適していません。
EnumThreadWindows の列挙動作は、MSDN で見られるものよりも詳細に説明されていますか?