Alt+Tabに列挙されるウインドウの基準
検索しても中途半端なものしか見つかりません。自分であれこれ試行錯誤した結果、簡潔にまとまったので、公開しておきます。Windows XPで確認してます。Windowsのバージョンによって違うということは無いと信じたいところです。
基本の3条件
ウインドウが下記3つのうちのひとつでも満たす場合は列挙されません。
- 無効(!IsWindowEnabled)
- 非表示(!IsWindowVisible)
- ツールウインドウ(WS_EX_TOOLWINDOW)
主従関係
そして、下記3つのうちのひとつでも満たす場合に列挙されます。
- ラストアクティブウインドウ(GetLastActivePopup(GetWindow(hWnd GW_OWNER)||hWnd)である
- ownedであり、ラストアクティブウインドウが無効である
- ownerであり、ラストアクティブウインドウが有効かつ、非表示かツールウインドウである
ラストアクティブウインドウが非表示な場合にどうするか、というのが混乱の元のようです。最後の条件が蛇足に感じますが、アクティブなポップアップが無効のオーナーウインドウはとにかく表示しない、ということのようです。
ラストアクティブウインドウの状態の変化はWinCheatを使って確認しました。