예제 #1
0
// Active check
BOOL Cmyadsk::CheckEnableActive(void)
{
  HRESULT hr;
  IActiveDesktop* pIAD;
  //创建接口的实例
  hr = CoCreateInstance ( CLSID_ActiveDesktop,  NULL, CLSCTX_INPROC_SERVER,       
              IID_IActiveDesktop, (void**) &pIAD );
  COMPONENTSOPT comp;
  comp.dwSize = sizeof(comp);
  //启用或关闭active desktop
  //comp.fActiveDesktop = bEnable;
  hr = pIAD->GetDesktopItemOptions(&comp, 0);
  if(comp.fActiveDesktop)
	  return TRUE;
  else
	  return FALSE;
  //释放接口的实例
  pIAD->Release();
  return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
	int AutoStartOption = 0;

	IActiveDesktop *pActiveDesktop;

	::CoInitialize( 0 );

	HRESULT hr = CoCreateInstance( CLSID_ActiveDesktop, 0, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pActiveDesktop );

	WALLPAPEROPT wopt;
	wopt.dwSize = sizeof(wopt);
	wopt.dwStyle = WPSTYLE_MAX;
	pActiveDesktop->SetWallpaperOptions(&wopt, 0);
	pActiveDesktop->SetWallpaper( argv[1], 0 );
	pActiveDesktop->ApplyChanges( AD_APPLY_ALL );
	pActiveDesktop->Release();

	::CoUninitialize();

	return 0;
}
예제 #3
0
int wallpaper_set(LPCTSTR path, int style)
{
    HRESULT hr;
    IActiveDesktop* pIAD;

    CoInitialize(NULL);
    hr = CoCreateInstance ( CLSID_ActiveDesktop,  NULL, CLSCTX_INPROC_SERVER,
                            IID_IActiveDesktop, (void**) &pIAD );
    if(!SUCCEEDED(hr))
        return FALSE;

#ifndef UNICODE
    WCHAR   wszWallpaper [2*MAX_PATH];
    MultiByteToWideChar(CP_ACP, 0, path, -1, wszWallpaper, MAX_PATH);
#else
    const WCHAR*  wszWallpaper = path;
#endif
    hr = pIAD->SetWallpaper(wszWallpaper, 0);
    if(!SUCCEEDED(hr))
        return FALSE;

    WALLPAPEROPT wpo;
    wpo.dwSize = sizeof(wpo);
    wpo.dwStyle = style;
    hr = pIAD->SetWallpaperOptions(&wpo, 0);
    if(!SUCCEEDED(hr))
        return FALSE;

    hr = pIAD->ApplyChanges(AD_APPLY_ALL);
    if(!SUCCEEDED(hr))
        return FALSE;

    pIAD->Release();
    CoUninitialize();
    return TRUE;
}
예제 #4
0
// Cmyadsk 成员函数
BOOL Cmyadsk::SetWallPaper(LPWSTR strPicFile, DWORD dwStyle)
{
  HRESULT hr;
  IActiveDesktop* pIAD;
	//创建接口的实例
  hr = CoCreateInstance ( CLSID_ActiveDesktop,  NULL, CLSCTX_INPROC_SERVER,       
              IID_IActiveDesktop, (void**) &pIAD );
  if(!SUCCEEDED(hr)) return FALSE;
  //将文件名改为宽字符串,这是IActiveDesktop::SetWallpaper的要求
  //WCHAR   wszWallpaper [MAX_PATH];
  //LPTSTR lpStr = strPicFile.GetBuffer(strPicFile.GetLength() );
  //MultiByteToWideChar(CP_ACP, 0, lpStr, -1, wszWallpaper, MAX_PATH);
  //strPicFile.ReleaseBuffer();
  //设置墙纸
  hr = pIAD->SetWallpaper(strPicFile, 0);
  if(!SUCCEEDED(hr)) return FALSE;
  //设置墙纸的样式
  WALLPAPEROPT wpo;
  wpo.dwSize = sizeof(wpo);
  wpo.dwStyle = dwStyle;
  hr = pIAD->SetWallpaperOptions(&wpo, 0);
  if(!SUCCEEDED(hr)) return FALSE;
  //应用墙纸的设置
  hr = pIAD->ApplyChanges(AD_APPLY_ALL);
  if(!SUCCEEDED(hr)) return FALSE;
  //读取墙纸的文件名并打印在debug窗口内
  //LPWSTR aa;
  //hr = pIAD->GetWallpaper(aa, MAX_PATH, 0);
  //CString strFile = aa;
  //TRACE(strFile); //如果不用位图的话,这里有你意想不到的发现
  //释放接口的实例
  pIAD->Release();
  CoFreeUnusedLibraries();     
  CoUninitialize();
  return TRUE;
}
void SetDesktopWallPaper(LPWSTR wallpaper)
{
	CoInitialize(NULL);   
    
	IActiveDesktop   *pDesk;   
	if(   S_OK   !=   CoCreateInstance   (   CLSID_ActiveDesktop,   NULL,   CLSCTX_INPROC_SERVER,   IID_IActiveDesktop,   (void**)   &pDesk   )   )   
	{ 
	  pDesk->Release();
	  return ;
	}   
	pDesk->SetWallpaper(wallpaper,0);
	WALLPAPEROPT wallpaperopt;
	wallpaperopt.dwSize = sizeof(WALLPAPEROPT);
	wallpaperopt.dwStyle = WPSTYLE_CENTER;
	pDesk->SetWallpaperOptions(&wallpaperopt,0);
	pDesk->ApplyChanges(AD_APPLY_ALL);
	pDesk->Release();
	CoFreeUnusedLibraries();   
	CoUninitialize();  
}