改变桌面背景 先将使用DELPHI将JPG转换成BMP图象好象ACDSEE也是这么做的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢panxiaosen,我是在做一程序﹐想把程序中的图像用一个click动作变为桌面背景!OK! 对于jpg和Gif或Htm得启用Active Desktop.要使用com,建议到VC去查一下IActiveDesktop.我以前写过VC的,但没在Delphi中写过,如果你能够改成Delphi的不妨一试. IActiveDesktop * p; CoInitialize(NULL); HRESULT hr = CoCreateInstance(CLSID_ActiveDesktop,NULL,CLSCTX_ALL,IID_IActiveDesktop,(LPVOID *)&p); //WCHAR szPath[MAX_PATH+1]; CHAR szWallpaperFile[MAX_PATH+1]; sprintf(szWallpaperFile,"f:\\photo\\955.jpg"); //sprintf(szWallpaperFile,"F:\\web\\default.htm"); USES_CONVERSION; LPCWSTR x = A2W(szWallpaperFile); //sprintf(szWallpaperFile,x); //AfxMessageBox(szWallpaperFile); //szPath=A2W(szWallpaperFile); //szPath=(WCHAR *)szWallpaperFile; //sprintf(WCHAR,szWallpaperFile); COMPONENTSOPT co; co.dwSize =sizeof(co); //int m_count; hr=p->GetDesktopItemOptions(&co,0); CString cs; /* hr=p->GetDesktopItemCount(&m_count,0); cs.Format("The count is:%ld",m_count); AfxMessageBox(cs); */ if(SUCCEEDED(hr)) { AfxMessageBox("ok to get op"); co.fActiveDesktop =FALSE; //co.fEnableComponents =FALSE; hr=p->SetDesktopItemOptions(&co,0); if(SUCCEEDED(hr)) AfxMessageBox("set desk option OK"); p->ApplyChanges(AD_APPLY_ALL); } if(SUCCEEDED(hr)) { //hr = p->SetWallpaper(szPath,0); hr = p->SetWallpaper(x,0); if(SUCCEEDED(hr)) { WALLPAPEROPT wpo; hr=p->GetWallpaperOptions((LPWALLPAPEROPT)&wpo,0); if(SUCCEEDED(hr)) AfxMessageBox("OKKK"); wpo.dwStyle= WPSTYLE_STRETCH; hr=p->SetWallpaperOptions(&wpo,0); if(SUCCEEDED(hr)) { AfxMessageBox("ok"); } p->ApplyChanges(AD_APPLY_ALL); } p->Release(); } CoUninitialize(); //SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"c:\\winnt\001.gif",SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE); //SystemParametersInfo(SPI_SETDESKWALLPAPER,0,szWallpaperFile,SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE);里面有些调试代码没去掉,谅。 计算机应用自考生如何向程序员转型? 如何调用系统默认邮件程序,并完成标题、地址、附件、正文的填写 请教地图最短路径算法问题. 东方美女 VS 西方美女 急!!!!怎样追加多条空记录? 找“二元函数数值拟和的算法” ActiveXForm怎样才能在前端显示出来???(急) 大家都來討論一下權根設置問題,有什么好的設計方案都貢獻出來 请帮忙看看这段流操作的代码错在哪里? rave report没有资料的问题 有谁金山毒霸的菜单是用什么做的? 诸位﹗Systemparametersinfo()只能将bmp图像作为桌面背景﹐什幺函数将jpg图像作桌面背景﹖Thanks!
CoInitialize(NULL);
HRESULT hr = CoCreateInstance(CLSID_ActiveDesktop,NULL,CLSCTX_ALL,IID_IActiveDesktop,(LPVOID *)&p);
//WCHAR szPath[MAX_PATH+1];
CHAR szWallpaperFile[MAX_PATH+1];
sprintf(szWallpaperFile,"f:\\photo\\955.jpg");
//sprintf(szWallpaperFile,"F:\\web\\default.htm");
USES_CONVERSION;
LPCWSTR x = A2W(szWallpaperFile);
//sprintf(szWallpaperFile,x);
//AfxMessageBox(szWallpaperFile);
//szPath=A2W(szWallpaperFile);
//szPath=(WCHAR *)szWallpaperFile;
//sprintf(WCHAR,szWallpaperFile);
COMPONENTSOPT co;
co.dwSize =sizeof(co);
//int m_count;
hr=p->GetDesktopItemOptions(&co,0);
CString cs;
/*
hr=p->GetDesktopItemCount(&m_count,0);
cs.Format("The count is:%ld",m_count);
AfxMessageBox(cs);
*/
if(SUCCEEDED(hr))
{
AfxMessageBox("ok to get op");
co.fActiveDesktop =FALSE;
//co.fEnableComponents =FALSE;
hr=p->SetDesktopItemOptions(&co,0);
if(SUCCEEDED(hr))
AfxMessageBox("set desk option OK");
p->ApplyChanges(AD_APPLY_ALL);
}
if(SUCCEEDED(hr))
{
//hr = p->SetWallpaper(szPath,0);
hr = p->SetWallpaper(x,0);
if(SUCCEEDED(hr))
{
WALLPAPEROPT wpo;
hr=p->GetWallpaperOptions((LPWALLPAPEROPT)&wpo,0);
if(SUCCEEDED(hr))
AfxMessageBox("OKKK");
wpo.dwStyle= WPSTYLE_STRETCH;
hr=p->SetWallpaperOptions(&wpo,0);
if(SUCCEEDED(hr))
{ AfxMessageBox("ok");
}
p->ApplyChanges(AD_APPLY_ALL); }
p->Release();
}
CoUninitialize();
//SystemParametersInfo(SPI_SETDESKWALLPAPER,0,"c:\\winnt\001.gif",SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE);
//SystemParametersInfo(SPI_SETDESKWALLPAPER,0,szWallpaperFile,SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE);里面有些调试代码没去掉,谅。