アップデート
確かに質問で指定されていますが、実際にはDWM Thumbnail APIとDwmRegisterThumbnail 関数の要件を具体的に調べていませんでした。
hwndソース
サムネイル ソースとして使用するウィンドウのハンドル。ソース ウィンドウ ハンドルをトップレベル ウィンドウ タイプ以外に設定すると、戻り値 E_INVALIDARG が返されます。[鉱山を強調]
強調された要件により、以下に概説するFindWindowEx()を介して取得された子ウィンドウを使用した私のアプローチは無効になります。つまり、代わりにFindWindow()のみを使用してトップレベル ウィンドウへのハンドルを取得することができます (これを指摘してくれた Simon に感謝します) - Simon の答えは、明らかにこの目的のために特別にレンダリングされたトップレベルの IE ウィンドウのクラス名に基づく適切なソリューション。
[...] DWM API 呼び出しを使用するには、hwnd を渡す必要があり、タブはすべて Internet Explorer と同じハンドルを共有します。
ウィンドウ階層をどのように検査しましたか? Spy++などでIE 9 ウィンドウを検査すると、次のウィンドウ クラスの階層が表示されます(省略形)。
子ウィンドウには個別のハンドルがあるため、(私の頭の上から) FindWindowEx 関数への適切な呼び出しを介して目的のウィンドウを取得できるはずです。
HWND hwndIeTab = ::FindWindowEx(hwndIeFrame, NULL, "Internet Explorer_Server", NULL);
目的のタブをすべて取得するには、FindWindowEx()hwndChildAfterの 2 番目のパラメーターを使用して結果を反復処理する必要があります。
子ウィンドウへのハンドル。検索は、Z オーダーで次の子ウィンドウから開始されます。子ウィンドウは、単なる子孫ウィンドウではなく、hwndParent の直接の子ウィンドウである必要があります。
したがって、最初にクラス「Frame Tab」を介して反復し、FindWindowEx()への 2 回目の呼び出しで各「Internet Explorer_Server」子ウィンドウを取得する必要があります (ただし、3 回目で子を上位に渡すかどうかを実験したい場合があります)。パラメータlpszClassは同等またはそれ以上の結果を生成します)。
幸運を!