Vista アプリケーションのサムネイル
-
06-09-2019 - |
質問
仕様上、最小化されたウィンドウ自体は再描画されないため、Vista のツールバー アプリケーションのサムネイルは、アプリケーションが最小化されても更新されません。私が所有している監視アプリケーションの場合、アプリケーションを最小化したままにしてアプリケーションのサムネイルを更新すると便利です。Delphi2009を使用しています。誰かがこれに対する良い回避策を提案できますか?
HMcG
解決
それは私が、WindowsのAPIを何らかの方法でそれが可能だと思い興味深いものだ、私は現時点ではVistaマシン上に存在しないが、私は、最小化時にWindows Media Playerがまだ動画の再生を示したと考えます。
私はハックがボタンを最小限に抑え、画面の外のフォームを移動し、その後、フォームが再びアクティブになると、古い場所に戻って移動検出上書きするだろうと仮定します。これは、フォームビューの外にあることを意味しますが最小化されないでしょう。
他のヒント
見つけました Microsoft 開発フォーラムで何か このトピックを扱うものです。質問は、カスタム サムネイル画像を提供する方法に関するもので、Microsoft の レオナルド・ブランコ こう答えた。
アプリがカスタムの代替サムネイル表現を作成する手段を提供する計画はありませんが、通常のサムネイル画像を完全にオプトアウトするためのAPIを提供します。
MSDN の関数の存在から判断すると、それらの計画はその間に変更された可能性があるようです。 DwmSetIconicLivePreviewBitmap
そして DwmSetIconicThumbnail
Windows 7の場合。現時点では、これらのエントリには実際には何の説明も含まれていませんが、その名前は有望に見えます。
Windows Media Player のサムネイルでは、ウィンドウが最小化されているときでも動画が動くと誰かが指摘しました。ブランコさんの説明はこうだ。
WMPは、[デスクトップウィンドウマネージャー]と直接話し合う新しいビデオパイプラインを使用して、よりスムーズな再生エクスペリエンスを実現します。このパイプラインは[directx]に依存しており、ウィンドウの可視性情報に依存していないため、アプリがフレームを提出し続ける限り、ウィンドウが最小限に抑えられていても、サムネイルを生かし続けることができます。ただし、ビデオの周りのUIがもうライブではないことに気付くかもしれません(ビデオの周りのUIが通常更新されないため、これは観察するのが難しいです)。この方法に関するもう少し情報については、
DwmSetPresentParameters
API。
申し訳ありませんが、これ以上のことは見つかりません。DWM 機能に関するドキュメントはほとんどありません。
アプリケーションの性質を考慮すると、おそらく検討する価値があります。 ガジェット Windows サイドバーに常駐します。
私はまだデルファイ2009で動作する
この回避策を知っていませんWndParentとしてGetDesktopWindowを設定します。私は、タスクバーのボタンでいくつかの情報を表示するために、過去にApplication.Titleを変更しました。私は、これは、アイコンの再描画が発生したとしていけない?
Delphiでは2007年、あなたのメインフォームは、タスクバーにある
Application.MainFormOnTaskbar := True;
更新し、それを維持するために、あなたは最小限にし、代わりにちょうど背中に移動からアプリケーションを防ぐために必要です。あなたは、フォーム上ののをTApplicationEventsを入れての OnMinimize のイベントにイベントハンドラを割り当てることによって、これを行うと、そこにApplication.Restore のを呼び出すことができます。あなたはあなた自身の最小化の状態を追跡しますが、最低Z-ために、それがされたときに、(あなたがそれらを持っている場合)とのみ表示あなたのメインフォームを持っているあなたが他のすべてのフォームを非表示を確認したくなるでしょう「最小化」。
私は、Windows Vistaを使用して、画面の外のフォームを移動したり、あなただけのことを行うことができないと思います。たぶん、その周りのハックがあります。
グッドラック!
ソース・プロジェクトに移動し、falseにApplication.MainFormOnTaskbarを変更します。 Application.MainFormOnTaskbar:=偽;
よろしく、 マウリシオ