Win7: Aero プレビューの仕様変更

Vista の Aero プレビューから仕様が一部変更になった部分があるので紹介します。

Vista/2008(R2) では、Aero プレビュー時、OS(厳密にはシェル) が一時的に ThumbnailClass というクラス名で
同じウィンドウキャプションであるウィンドウを作成していました。
これがなかなか曲者で、一度、Aero プレビューを表示すると、ThumbnailClass クラスウィンドウが破棄されないと
いう問題がありました。さらに、Z オーダーがオリジナルウィンドウクラスよりも上であるため、

FindWindow(NULL, “ウィンドウキャプション名”)

でウィンドウを検索すると、ThumbnailClass クラスウィンドウの方が検索されてしまいます。

Windows Vista で Aero プレビューを表示したときのデスクトップウィンドウ

クラス名を NULL で検索した結果のウィンドウに対して、メッセージを送信していたら…と考えると少し怖いです。
まあ、FindWindow() の際に、クラス名まできっちりと指定していれば問題はないのですが。。。
で、この仕様が、Windows 7 では変更されました。Windows 7 では、ThumbnailClass クラスウィンドウは生成せずに
TaskListOverlayWnd クラスと TaskListThumbnailWnd クラスで処理するよう変更されています。

Windows 7 で Aero プレビューを表示したときのデスクトップウィンドウ

このため、コーディングで良いかは別にして、

FindWindow(NULL, “ウィンドウキャプション名”)

というコードでも、問題なくウィンドウを検索することができます。
ただ、誤判定を防止する意味でもクラス名はきちんと指定しておいた方がよいと思います。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。