4

私のアプリケーションは、動的に作成されたいくつかのフォームの自動スクリーンショットを作成します。これは Windows XP では完全に機能しますが、Vista Aero ではうまく機能しません。スクリーンショットでは、ほとんどのフォームが半透明に見えます。問題は、Aero のウィンドウ アニメーションにあります。

Delphi (2007+) プログラム内からこのアニメーションをチェック/無効/有効にするにはどうすればよいですか?

または別の方法: スクリーンショットを作成する前に、フォームが正しく表示されていることを確認するにはどうすればよいですか?

4

4 に答える 4

2

Shoban からのコメントのリンクは、私を正しい方向に導きました。簡単なチェックで、VCL の DwmApi のラッパーが示され、そこから簡単に進みました。これが私が今うまく使っているコードです:

uses DwmApi;
...
  SaveDwmCompositionEnabled := DwmCompositionEnabled;
  if SaveDwmCompositionEnabled then
    DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
...
  if SaveDwmCompositionEnabled then
    DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
于 2009-07-18T10:51:25.803 に答える
1

Aero を無効にするのは残念です。一般に、ユーザーが選択した UI スタイルを変更することはお勧めできません。

別の方法でフォームを描画できる場合があります。頭に浮かぶのは、PaintToメソッドを使用してキャンバスにペイントすることです。(実際、見た目を把握するためにフォームのスクリーンショットを撮っている場合は、おそらくフォームを表示する必要はまったくありません。Visible を false に設定してフォームを作成し、ビットマップにペイントします。ユーザーがそれらと対話する必要がある場合は、それらを表示します)。

于 2009-07-17T00:16:27.067 に答える
0

マニフェストリソースをexeファイルに追加して、アプリケーションがAerohttp ://www.google.be/search? q= vista+manifest+resource+delphiなしで実行されることをVistaに通知できます 。

于 2009-07-16T21:17:53.827 に答える