VS2010 の C# .NET4.0 でスクリーン セーバーを開発していますが、実際に画面を表示する前にかなりの処理を行う必要があります (かなり複雑なデータベース アクセス)。ユーザーはこの処理が行われていることに気付かず、すべての準備が整うと全画面フォームが開始されるため、これは問題ありません。つまり、Windows 8 で実行している場合を除きます。
Microsoft コミュニティで検索する ( http://answers.microsoft.com/en-us/windows/forum/windows_8-desktop/bubbles-screensaver-has-black-background/e0807324-5ca6-4abe-b6ba-716848b41ff5?page= 4 ) は、Windows 8 で設計変更が行われ、スクリーンセーバーがデスクトップの画像の上に描画されないようにしたことを明らかにしています。以前にデスクトップ上に描画されたスクリーンセーバーは、代わりに、選択した「メトロ」背景色を使用して無地の背景上に描画されます。実験の結果、.scr ファイルが起動されるとすぐに、つまりフォームが表示される前に、このバックグラウンドが開始されることがわかりました。したがって、フォームを最小化または 0% の不透明度で表示するようなトリックは機能しません。
私が思いついた最善の方法は、コードが開始されたとき、つまりデータベース処理やその他の画面構築が行われる前に、最初のアクションとして全画面のプレーンな黒いフォームを表示することです。普通の画面を別の普通の画面に置き換えようとするのはなぜですか? Windows のデフォルトの背景色は青色のようです。これは BSOD の青のような青で、起動すると警告を発するように見えます。したがって、Windows 8 のユーザー エクスペリエンスのために私ができる最善の方法は、画面に何か意味のあるものが表示される前に、青がすばやくちらつき、続いて 3 ~ 4 秒間真っ黒になることです。 . Microsoft のこの新しい動作は、明らかに「仕様による」ものです。プレビュー モードで表示されないという事実は、MS が後で片付けると思われるエラーであるようです。
だから私の質問は、スクリーンセーバーフォームが作動する準備が整うまでデスクトップを表示し続けることができるように、これを回避する方法を知っている人はいますか?