2012-04-11 7 views
3

私のアプリケーション(ブラウザで「シングルプロセス」を実行しているFirefoxプラグイン)でAeroを有効にしようとしていますが、失敗しています。 OSはWindows 7 64bitです。DwmEnableCompositionがAeroを有効にしていません

これはコードです:、任意の助けをいただければ幸いです

S_OK 

感謝:

BOOL bEnabled = FALSE; 
if(SUCCEEDED(DwmIsCompositionEnabled(&bEnabled)) && !bEnabled){   
    HRESULT hres = DwmEnableComposition(DWM_EC_ENABLECOMPOSITION); 
} 

DwmEnableCompositionが組成物を有効にする必要がありますが、それはない、また、関数は返します!

答えて

2

DwmEnableComposition()は、システム全体で無効になっているときは無効です。 DWMと互換性のない操作を開始または終了していることをWindowsに通知するのが唯一の目的です。

さらに、OSの外観はユーザーによって異なりますが、構成するプログラムによって決まるわけではありません。

+0

答えていただきありがとうございます。プログラムでは、Aeroをマシンで有効にするかどうかをユーザーに確認します。 MSDNは、Aeroを有効にするか無効にするかを明記しています.Aeroを無効にすることはできますが、この方法では有効にできません。だから私はuxsmsサービスを調べることで終わった。最初にWindows 7の基本テーマをオンにしてからサービスを開始する。 –

4

DWM合成を有効にすることはできません。それが無効になるよう要求することしかできません。あなたはそれをオフにする必要が完了したら、あなたは、MSDNから

DwmEnableComposition(DWM_EC_ENABLECOMPOSITION); 

を呼び出す:無効な組成を有しているすべてのプロセスがそれを有効にするか、または持っているDwmEnableCompositionを呼び出したとき

DWM組成物が自動的に有効になります終了しました。

を有効にすることができない場合は、無効にする必要がなくなったことをお知らせするだけです。 (Microsoftがあなたに作曲を許可しない理由は、you can't be trusted to not try to do it.

また、あなたが後ろにいる間もあきらめるべきです。再びMSDNから:

この関数は、Windows 8コンシューマープレビューでは非推奨です。 DWMをプログラムで無効にすることはできません。

関連する問題