using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
using SlimDX;
namespace FDK
{
//http://spazzarama.wordpress.com/2009/09/30/enable-or-disable-dwm-composition-aero/
///
/// To control Aerograph in Vista and Windows7. Don't use this class in XP.
///
public static class DWM
{
const uint DWM_EC_DISABLECOMPOSITION = 0;
const uint DWM_EC_ENABLECOMPOSITION = 1;
[DllImport( "dwmapi.dll", EntryPoint = "DwmEnableComposition" )]
extern static uint DwmEnableComposition( uint compositionAction );
[DllImport( "dwmapi.dll", EntryPoint = "DwmEnableComposition" )]
public extern static bool DwmIsCompositionEnabled(out bool pfEnabled);
[DllImport( "dwmapi.dll", EntryPoint = "DwmFlush" )]
extern static int DwmFlush();
// [DllImport( "dwmapi.dll", EntryPoint = "DwmEnableMMCSS" )]
// extern static int DwmEnableMMCSS( bool fEnableMMCSS );
[DllImport( "dwmapi.dll", EntryPoint = "DwmFlush" )]
extern static int DwmEnableMMCSS( bool fEnableMMCSS );
public static int IsCompositionEnabled(out bool enabled)
{
#if TEST_Direct3DEx
return DwmIsCompositionEnabled( out enabled );
#else
enabled = false;
return 0;
#endif
}
public static int Flush()
{
#if TEST_Direct3DEx
return DwmFlush();
#else
return 0; // 0(S_OK)なら成功
#endif
}
///
/// Enable/Disable DWM composition (aka Aero)
///
/// True to enable composition, false to disable composition.
/// True if the operation was successful.
public static bool EnableComposition( bool bIsAeroEnabled )
{
// DwmEnableMMCSS( true );
#if TEST_Direct3D9Ex
try
{
if ( bIsAeroEnabled )
{
DwmEnableComposition( DWM_EC_ENABLECOMPOSITION );
}
else
{
DwmEnableComposition( DWM_EC_DISABLECOMPOSITION );
}
return true;
}
catch ( DllNotFoundException )
{
return false;
}
#else
return true;
#endif
}
}
}