如何设置WEB页面为桌面墙纸.100分在线等. 不能用SetWallpaper这个方法来设置.这样设置只能先保存WEB页面.再当墙纸贴上去.不知道 IActiveDesktop还有哪个函数可以直接设置.... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL GenerateDesktopItemHtml( LPCWSTR pwszFileName, LPCOMPONENT pcomp, DWORD dwReserved){ HRESULT hr; IActiveDesktop* pIAD; //创建接口的实例 hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pIAD ); if(!SUCCEEDED(hr)) return FALSE; ::MessageBox(NULL,"成功1","2",NULL); hr = pIAD->GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved); if(!SUCCEEDED(hr)) return FALSE; hr = pIAD->ApplyChanges(AD_APPLY_ALL); ::MessageBox(NULL,"成功2","2",NULL); if(!SUCCEEDED(hr)) return FALSE; pIAD->Release(); ::MessageBox(NULL,"成功3","2",NULL); return TRUE;}void CFffDlg::OnOK() {CString lpa = "c:\\ass.html"; size_t aLen = strlen( lpa ) + 1; int wLen = MultiByteToWideChar( CP_ACP, 0, lpa, aLen, NULL, 0); LPWSTR pwszFileName = new WCHAR [wLen]; MultiByteToWideChar( CP_ACP, 0, lpa, aLen, pwszFileName, wLen); DWORD dwReserved=0; LPCOMPONENT pcomp=new _tagCOMPONENT; COMPPOS cpPos1=*new _tagCOMPPOS; cpPos1.dwSize=sizeof(cpPos1); cpPos1.dwHeight=1; cpPos1.dwWidth=1; cpPos1.iLeft=200; cpPos1.iTop=200; cpPos1.fCanResize=true; cpPos1.fCanResizeX=true; cpPos1.fCanResizeY=true; cpPos1.izIndex=0;//z轴次序? cpPos1.iPreferredLeftPercent=10; cpPos1.iPreferredTopPercent=10; pcomp->cpPos=cpPos1; pcomp->dwSize=sizeof(pcomp); pcomp->dwID=0; pcomp->fChecked=true; pcomp->fDirty=false; pcomp->fNoScroll=true; pcomp->iComponentType=COMP_TYPE_WEBSITE; CString URL="http:///www.baidu.com"; LPTSTR lpStrw1 = URL.GetBuffer(URL.GetLength() ); MultiByteToWideChar(CP_ACP, 0, lpStrw1, -1,pcomp->wszFriendlyName, MAX_PATH); MultiByteToWideChar(CP_ACP, 0, lpStrw1, -1,pcomp->wszSource, MAX_PATH); MultiByteToWideChar(CP_ACP, 0, lpStrw1, -1,pcomp->wszSubscribedURL, MAX_PATH); //pcomp->wszFriendlyName= ; //pcomp->wszSource //pcomp->wszSubscribedURL //GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved); if(TRUE==GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved)) { MessageBox("成功"); CDialog::OnOK(); } else MessageBox("失败"); // TODO: Add extra validation here} 上面是我写的 不知道是参数设置错误还是怎么反正到if(!SUCCEEDED(hr)) return FALSE; ::MessageBox(NULL,"成功1","2",NULL); hr = pIAD->GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved);这里 就出错了.... 用这个就可以了 IActiveDesktop::SetWallpaper 用IActiveDesktop::SetWallpaper 只能设置图片 要设置web页面 就必须先保存web页面到本地 再贴上去我是说有没直接设置的呢? html格式的用setwallpaper应该是可以的直接设置?????那如果用户的机器不连接internet,即使有方法可以设置,那桌面上显示的岂不是[找不到服务器]那样的页面了? yes 就是这个效果...不用保存到本地而直接设置 不知道IActiveDesktop是否能实现 看了IActiveDesktop的所有接口,好象没说有的刚才自己在winxp试了下:桌面右键->属性->桌面->自定义桌面->web->新建->www.163.com->确定,然后就看到windows开始进行网页的脱机保存工作,从这里就知道至少windows也是先保存到本地,然后再用IActiveDesktop::AddDesktopItem之类的函数添加的所以楼主的想法不知道能否实现?不过有个变通的方法:就是自己写个程序,做成透明的,附着在桌面上,就像鱼鱼桌面秀那样,只让窗口显示你要的网页就可以了 palmax(南宫煌) 说的有道理..能否看看我写的程序 到底哪里出错...对里面有些参数的设置实在不知道是干什么的.......所以估摸着赋了值..我需要的功能是能同时设置几个WEB页面在桌面上.所以不能用setwallpaper明天上班再结贴..谢谢各位 hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pIAD );if(!SUCCEEDED(hr)) return FALSE; ::MessageBox(NULL,"成功1","2",NULL); hr = pIAD->GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved);if(!SUCCEEDED(hr)) return FALSE;------------------------------------------------------------------------------------------------------hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pIAD );这句完后,hr的值写的很清楚,在这句之前你要先调用 CoInitialize();记得最后结束时调用 CoUninitialize() AfxOleInit();HRESULT hr; IActiveDesktop *pActiveDesktop; COMPONENT compDesktopItem; compDesktopItem.cpPos.dwHeight=100; compDesktopItem.cpPos.dwWidth=100; hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**)&pActiveDesktop); compDesktopItem.dwSize = sizeof(COMPONENT); CString strSrc="http://sohu.com"; int unicodeLen=MultiByteToWideChar(CP_ACP,0,strSrc,-1,NULL,0); wchar_t *pUnicode; pUnicode=new wchar_t[unicodeLen+1]; memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode,unicodeLen); wcscpy( compDesktopItem.wszSubscribedURL,pUnicode); wchar_t *pUnicode1; pUnicode1=new wchar_t[unicodeLen+1]; memset(pUnicode1,0,(unicodeLen+1)*sizeof(wchar_t)); MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode1,unicodeLen); wcscpy( compDesktopItem.wszSource,pUnicode1); wchar_t *pUnicode2; pUnicode2=new wchar_t[unicodeLen+1]; memset(pUnicode2,0,(unicodeLen+1)*sizeof(wchar_t)); MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode2,unicodeLen); wcscpy( compDesktopItem.wszFriendlyName,pUnicode2);//显示用的 COMPPOS cpPos1; cpPos1.dwSize=sizeof(COMPPOS); cpPos1.dwHeight=100; cpPos1.dwWidth=100; cpPos1.iLeft=200; cpPos1.iTop=200; cpPos1.fCanResize=TRUE; cpPos1.fCanResizeX=TRUE; cpPos1.fCanResizeY=FALSE; cpPos1.izIndex=10010; cpPos1.iPreferredLeftPercent=10; cpPos1.iPreferredTopPercent=10; compDesktopItem.cpPos=cpPos1; compDesktopItem.dwID=0; compDesktopItem.fChecked=TRUE;//FALSE就默认不开启 compDesktopItem.fDirty=TRUE; compDesktopItem.fNoScroll=FALSE; compDesktopItem.iComponentType=COMP_TYPE_WEBSITE; /////////////////// pActiveDesktop->AddDesktopItem(&compDesktopItem,0); //pActiveDesktop->ModifyDesktopItem(&compDesktopItem,COMP_TYPE_WEBSITE);修改 pActiveDesktop->ApplyChanges(AD_APPLY_ALL); delete pUnicode; delete pUnicode1; delete pUnicode2;::CoUninitialize(); 呵呵楼主给分吧!~ 求教 DLL 中变量的共享范围 完美解决串口调试助手2.3显示滞后问题 TransmitFile怎么没立即返回? 问一个简单问题,分虽少,来拿吧 在VS2002的IDE中,编辑对话框时,用方向键进行位置微调的功能怎么没了? _stdcall 和_cdecl这两个关键字有什么作用呢? 那位大侠知道哪儿有电子版的《Inside VC++》吗? 打开文件--菜鸟提问,见笑。 有谁用ado连接过Oracle?一个具体问题。 如何“动态”的调用“动态连接库”? 算法:平面上一些点,如何找某一点周围一圈最近的点? ICMP 中recvfrom的问题
LPCOMPONENT pcomp,
DWORD dwReserved)
{ HRESULT hr;
IActiveDesktop* pIAD;
//创建接口的实例
hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**) &pIAD );
if(!SUCCEEDED(hr)) return FALSE; ::MessageBox(NULL,"成功1","2",NULL);
hr = pIAD->GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved);
if(!SUCCEEDED(hr)) return FALSE;
hr = pIAD->ApplyChanges(AD_APPLY_ALL);
::MessageBox(NULL,"成功2","2",NULL);
if(!SUCCEEDED(hr)) return FALSE;
pIAD->Release();
::MessageBox(NULL,"成功3","2",NULL);
return TRUE;
}void CFffDlg::OnOK()
{
CString lpa = "c:\\ass.html";
size_t aLen = strlen( lpa ) + 1;
int wLen = MultiByteToWideChar(
CP_ACP,
0,
lpa,
aLen,
NULL,
0);
LPWSTR pwszFileName = new WCHAR [wLen];
MultiByteToWideChar(
CP_ACP,
0,
lpa,
aLen,
pwszFileName,
wLen);
DWORD dwReserved=0;
LPCOMPONENT pcomp=new _tagCOMPONENT;
COMPPOS cpPos1=*new _tagCOMPPOS;
cpPos1.dwSize=sizeof(cpPos1);
cpPos1.dwHeight=1;
cpPos1.dwWidth=1;
cpPos1.iLeft=200;
cpPos1.iTop=200;
cpPos1.fCanResize=true;
cpPos1.fCanResizeX=true;
cpPos1.fCanResizeY=true;
cpPos1.izIndex=0;//z轴次序?
cpPos1.iPreferredLeftPercent=10;
cpPos1.iPreferredTopPercent=10;
pcomp->cpPos=cpPos1;
pcomp->dwSize=sizeof(pcomp);
pcomp->dwID=0;
pcomp->fChecked=true;
pcomp->fDirty=false;
pcomp->fNoScroll=true;
pcomp->iComponentType=COMP_TYPE_WEBSITE;
CString URL="http:///www.baidu.com";
LPTSTR lpStrw1 = URL.GetBuffer(URL.GetLength() );
MultiByteToWideChar(CP_ACP, 0, lpStrw1, -1,pcomp->wszFriendlyName, MAX_PATH);
MultiByteToWideChar(CP_ACP, 0, lpStrw1, -1,pcomp->wszSource, MAX_PATH);
MultiByteToWideChar(CP_ACP, 0, lpStrw1, -1,pcomp->wszSubscribedURL, MAX_PATH);
//pcomp->wszFriendlyName= ;
//pcomp->wszSource
//pcomp->wszSubscribedURL
//GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved);
if(TRUE==GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved))
{
MessageBox("成功");
CDialog::OnOK();
}
else MessageBox("失败");
// TODO: Add extra validation here}
hr = pIAD->GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved);
这里 就出错了....
直接设置?????
那如果用户的机器不连接internet,即使有方法可以设置,那桌面上显示的岂不是[找不到服务器]那样的页面了?
桌面右键->属性->桌面->自定义桌面->web->新建->www.163.com->确定,然后就看到windows开始进行网页的脱机保存工作,从这里就知道至少windows也是先保存到本地,然后再用IActiveDesktop::AddDesktopItem之类的函数添加的所以楼主的想法不知道能否实现?不过有个变通的方法:就是自己写个程序,做成透明的,附着在桌面上,就像鱼鱼桌面秀那样,只让窗口显示你要的网页就可以了
IID_IActiveDesktop, (void**) &pIAD );
if(!SUCCEEDED(hr)) return FALSE; ::MessageBox(NULL,"成功1","2",NULL);
hr = pIAD->GenerateDesktopItemHtml( pwszFileName,pcomp,dwReserved);
if(!SUCCEEDED(hr)) return FALSE;
------------------------------------------------------------------------------------------------------
hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**) &pIAD );
这句完后,hr的值写的很清楚,在这句之前你要先调用 CoInitialize();
记得最后结束时调用 CoUninitialize()
IActiveDesktop *pActiveDesktop;
COMPONENT compDesktopItem;
compDesktopItem.cpPos.dwHeight=100;
compDesktopItem.cpPos.dwWidth=100;
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
IID_IActiveDesktop, (void**)&pActiveDesktop);
compDesktopItem.dwSize = sizeof(COMPONENT);
CString strSrc="http://sohu.com";
int unicodeLen=MultiByteToWideChar(CP_ACP,0,strSrc,-1,NULL,0);
wchar_t *pUnicode;
pUnicode=new wchar_t[unicodeLen+1];
memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode,unicodeLen);
wcscpy( compDesktopItem.wszSubscribedURL,pUnicode);
wchar_t *pUnicode1;
pUnicode1=new wchar_t[unicodeLen+1];
memset(pUnicode1,0,(unicodeLen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode1,unicodeLen);
wcscpy( compDesktopItem.wszSource,pUnicode1);
wchar_t *pUnicode2;
pUnicode2=new wchar_t[unicodeLen+1];
memset(pUnicode2,0,(unicodeLen+1)*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,strSrc,-1,(LPWSTR)pUnicode2,unicodeLen);
wcscpy( compDesktopItem.wszFriendlyName,pUnicode2);//显示用的
COMPPOS cpPos1;
cpPos1.dwSize=sizeof(COMPPOS);
cpPos1.dwHeight=100;
cpPos1.dwWidth=100;
cpPos1.iLeft=200;
cpPos1.iTop=200;
cpPos1.fCanResize=TRUE;
cpPos1.fCanResizeX=TRUE;
cpPos1.fCanResizeY=FALSE;
cpPos1.izIndex=10010;
cpPos1.iPreferredLeftPercent=10;
cpPos1.iPreferredTopPercent=10;
compDesktopItem.cpPos=cpPos1;
compDesktopItem.dwID=0;
compDesktopItem.fChecked=TRUE;//FALSE就默认不开启
compDesktopItem.fDirty=TRUE;
compDesktopItem.fNoScroll=FALSE;
compDesktopItem.iComponentType=COMP_TYPE_WEBSITE;
///////////////////
pActiveDesktop->AddDesktopItem(&compDesktopItem,0);
//pActiveDesktop->ModifyDesktopItem(&compDesktopItem,COMP_TYPE_WEBSITE);修改
pActiveDesktop->ApplyChanges(AD_APPLY_ALL);
delete pUnicode;
delete pUnicode1;
delete pUnicode2;::CoUninitialize(); 呵呵
楼主给分吧!~