这可能是你碰到得最简单的例子。它使用外壳中的活动桌面组件对象类(CLSID_ActiveDesktop)
来获得当前桌面墙纸的文件名,请确认系统中安装了活动桌面(Active Desktop)
//其中在注册表中, 我明明查看得到了下面的信息, 但是编译的时候, 却出错
interface=
{F490EB00-1240-11D1-9888-006097DEACF9}=IActiveDesktop
//...........................
WCHAR wszWallpaper [MAX_PATH];
CString strPath;
HRESULT hr;
IActiveDesktop* pIAD; //此处编译不过, 错误内容如下 CoInitialize ( NULL ); hr = CoCreateInstance ( CLSID_ActiveDesktop,
NULL,
CLSCTX_INPROC_SERVER,
IID_IActiveDesktop,
(void**) &pIAD );//此处也会报错,错误内容如下
if ( SUCCEEDED(hr) )
{
//..................
}//编译报错内容如下
Compiling...
TestCOMdllDlg.cpp
C:\Documents and Settings\DSG\桌面\TestCOMdll\TestCOMdllDlg.cpp(179) : error C2065: 'IActiveDesktop' : undeclared identifier
C:\Documents and Settings\DSG\桌面\TestCOMdll\TestCOMdllDlg.cpp(179) : error C2065: 'pIAD' : undeclared identifier
C:\Documents and Settings\DSG\桌面\TestCOMdll\TestCOMdllDlg.cpp(179) : warning C4552: '*' : operator has no effect; expected operator with side-effect
Error executing cl.exe.TestCOMdll.exe - 2 error(s), 1 warning(s)
来获得当前桌面墙纸的文件名,请确认系统中安装了活动桌面(Active Desktop)
//其中在注册表中, 我明明查看得到了下面的信息, 但是编译的时候, 却出错
interface=
{F490EB00-1240-11D1-9888-006097DEACF9}=IActiveDesktop
//...........................
WCHAR wszWallpaper [MAX_PATH];
CString strPath;
HRESULT hr;
IActiveDesktop* pIAD; //此处编译不过, 错误内容如下 CoInitialize ( NULL ); hr = CoCreateInstance ( CLSID_ActiveDesktop,
NULL,
CLSCTX_INPROC_SERVER,
IID_IActiveDesktop,
(void**) &pIAD );//此处也会报错,错误内容如下
if ( SUCCEEDED(hr) )
{
//..................
}//编译报错内容如下
Compiling...
TestCOMdllDlg.cpp
C:\Documents and Settings\DSG\桌面\TestCOMdll\TestCOMdllDlg.cpp(179) : error C2065: 'IActiveDesktop' : undeclared identifier
C:\Documents and Settings\DSG\桌面\TestCOMdll\TestCOMdllDlg.cpp(179) : error C2065: 'pIAD' : undeclared identifier
C:\Documents and Settings\DSG\桌面\TestCOMdll\TestCOMdllDlg.cpp(179) : warning C4552: '*' : operator has no effect; expected operator with side-effect
Error executing cl.exe.TestCOMdll.exe - 2 error(s), 1 warning(s)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货