新年上班第一天的有关问题:IActiveDesktop的GetWallpaper获取的路径如何不正确
新年上班第一天的问题:IActiveDesktop的GetWallpaper获取的路径怎么不正确
我用COM组件IActiveDesktop获取的壁纸路径怎么不正确?获取是能获取,但是是错误的,我获取的路径为:C:\Users\Administrator\AppData\Local\Temp\bg766E.jpg
可是我到Temp路径下去看,根本就没有bg766E.jpg这张图片,这个文件名的文件也没有,我用的是WIN7 SP1系统和VS2008编程IDE环境,第一次这么专心的用COM,居然出错了,真心示解,望高人指点!
------解决方案--------------------
wallpaper应该有两种模式 一种是原始的 一种是转化过的 你得到的可能是转化过的 我以前写的一个获取wallpaper路径的代码 当时比较清楚 现在记不清为啥那样写了
------解决方案--------------------
获取壁纸的路径可以用这个:
------解决方案--------------------
用你的方式得到的结果:
C:\Windows\web\wallpaper\Windows\img0.jpg
我用COM组件IActiveDesktop获取的壁纸路径怎么不正确?获取是能获取,但是是错误的,我获取的路径为:C:\Users\Administrator\AppData\Local\Temp\bg766E.jpg
可是我到Temp路径下去看,根本就没有bg766E.jpg这张图片,这个文件名的文件也没有,我用的是WIN7 SP1系统和VS2008编程IDE环境,第一次这么专心的用COM,居然出错了,真心示解,望高人指点!
WCHAR wszWallpaper[ MAX_PATH ];
CString strPath;
HRESULT hr;
IActiveDesktop* pIAD;
hr = CoCreateInstance( CLSID_ActiveDesktop, // (in)CoClass的CLSID
NULL, // (in)集合,这里不使用
CLSCTX_INPROC_SERVER,// (in)Server类型为“进程内Server”
IID_IActiveDesktop, // (in)接口的IID
(void**) &pIAD); // (out)返回接口指针
if ( SUCCEEDED( hr ) )
{
// 如果成功创建COM对象,我们调用GetWallpaper()
hr = pIAD->GetWallpaper( wszWallpaper, MAX_PATH, 0 ); // 获取是获取了,但是错误的
if ( SUCCEEDED(hr) )
{
// 如果成功,打印它返回的文件名
MessageBox( wszWallpaper );
}
else
{
MessageBox( _T("Failed!") );
}
pIAD->Release();
}
else
{
MessageBox( _T("CoCreateInstance() failed.") );
}
------解决方案--------------------
wallpaper应该有两种模式 一种是原始的 一种是转化过的 你得到的可能是转化过的 我以前写的一个获取wallpaper路径的代码 当时比较清楚 现在记不清为啥那样写了
CString GetWallPaperPath()
{
CRegistryFt reg;
CString sPaperPath;
if (reg.Open( HKEY_CURRENT_USER, _T("Control Panel\\Desktop")))
{
if( !reg.Read( _T("Wallpaper"), sPaperPath ) )
{
sPaperPath.Empty();
}
}
else if (reg.Open( HKEY_CURRENT_USER, _T("Control Panel\\Desktop")))
{
if( !reg.Read( _T("ConvertedWallpaper"), sPaperPath ) )
{
sPaperPath.Empty();
}
}
return sPaperPath;
}
------解决方案--------------------
获取壁纸的路径可以用这个:
TCHAR szWallpaper[MAX_PATH] = { 0 };
SystemParametersInfo(SPI_GETDESKWALLPAPER, _countof(szWallpaper), (PVOID)szWallpaper, 0);
------解决方案--------------------
用你的方式得到的结果:
C:\Windows\web\wallpaper\Windows\img0.jpg