본문 바로가기

MS/Windows7

Check the windows Areo theme (DwmIsCompositionEnabled)

출처 : http://cafe.naver.com/tjdc/445


// 이 클래스는 m_hDWMApi 핸들이 유효할때 까지 적용된다.

// EnableComposition 기능은 이 클래스가 소멸되면 자동으로 원상태로 돌아간다.

class CDWMApiDll

{

typedef HRESULT (CALLBACK * pfDwmIsCompositionEnabled)(BOOL *pbEnabled);

typedef HRESULT (CALLBACK * pfDwmEnableComposition) (BOOL bEnable);

public:

CDWMApiDll()

{

m_hDWMApi = NULL;

f_IsEnabled = NULL;

f_Enable = NULL;

};

virtual ~CDWMApiDll()

{

if(m_hDWMApi != NULL)

{

::FreeLibrary(m_hDWMApi);

m_hDWMApi = NULL;

}

};

//////////////////////////////////////////////////////////////////////////

// Load dwmapi.dll

BOOL Load_DWMAPIDll()

{

m_hDWMApi = ::LoadLibrary("dwmapi.dll");

if(m_hDWMApi == NULL) return FALSE;

f_IsEnabled = (pfDwmIsCompositionEnabled)::GetProcAddress(m_hDWMApi, "DwmIsCompositionEnabled");

f_Enable = (pfDwmEnableComposition) ::GetProcAddress(m_hDWMApi, "DwmEnableComposition");

return TRUE;

};

// Check Composition Aero 기능이 설정되어 있으면 TRUE 반환.

BOOL IsCompositionEnabled()

{

BOOL bEnabled = FALSE;

if(f_IsEnabled == NULL) return FALSE;

HRESULT hr;

hr = f_IsEnabled(&bEnabled);

if(SUCCEEDED(hr) && (bEnabled == TRUE))

{

return TRUE;

}

else

return FALSE;

};

// Aero 기능을 ON/OFF 시킨다.

HRESULT EnableComposition(BOOL bEnable = FALSE)

{

if(f_Enable == NULL || f_IsEnabled == NULL) return E_FAIL;

return f_Enable(bEnable);

};

private:

HINSTANCE m_hDWMApi;

pfDwmIsCompositionEnabled f_IsEnabled;

pfDwmEnableComposition f_Enable;

};

클래스 사용 방법 입니다. 간단하게 Aero기능이 설정 되어 있으면 설정해제 시키는 부분입니다.

// 선언부

CDWMApiDll m_dwmapiDll;

// 구현부

if(IsVistaOS()) // Vista인지 체크

{

if(m_dwmapiDll.Load_DWMAPIDll())

{

if(m_dwmapiDll.IsCompositionEnabled())

{

m_dwmapiDll.EnableComposition(FALSE);

}

}

}


'MS > Windows7' 카테고리의 다른 글

Off the Aero theme in Windows7  (0) 2010.06.29