这可能是你碰到得最简单的例子。它使用外壳中的活动桌面组件对象类(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)