关闭

调用COM对象的GetWallpaper()方法。 如果GetWallpaper()成功,则输出/显示墙纸文件名

807人阅读 评论(0) 收藏 举报
/*
初始化COM库。 (Initialize)  
创建一个与活动桌面交互的COM对象,并取得IActiveDesktop接口。  
调用COM对象的GetWallpaper()方法。  
如果GetWallpaper()成功,则输出/显示墙纸文件名。  
释放接口(Release())。  
收回COM库(Uninitialize)。  
//*/
//#include <windows.h>
#include <afxwin.h>
#include <afxext.h> // MFC 扩展 
#include "wininet.h" // 自己添加(IActiveDesktop需要) 
#include <afxdtctl.h> // MFC 对 Internet Explorer 4 
#include <iostream>
using namespace std;

void main(void)
{
WCHAR   wszWallpaper [MAX_PATH];  
CString strPath;  
HRESULT hr;  
IActiveDesktop* pIAD;  
  
    // 1. 初始化COM库(让Windows加载DLLs)。通常是在程序的InitInstance()中调用  
    // CoInitialize ( NULL )或其它启动代码。MFC程序使用AfxOleInit()。  
  
    CoInitialize ( NULL );  
  
    // 2. 使用外壳提供的活动桌面组件对象类创建COM对象。  
    // 第四个参数通知COM需要什么接口(这里是IActiveDesktop).  
  
    hr = CoCreateInstance ( CLSID_ActiveDesktop,  
                            NULL,  
                            CLSCTX_INPROC_SERVER,  
                            IID_IActiveDesktop,  
                            (void**) &pIAD );  
  
    if ( SUCCEEDED(hr) )  
        {  
        // 3. 如果COM对象被创建成功,则调用这个对象的GetWallpaper() 方法。  
        hr = pIAD->GetWallpaper ( wszWallpaper, MAX_PATH, 0 );  
  
        if ( SUCCEEDED(hr) )  
            {  
            // 4. 如果 GetWallpaper() 成功,则输出它返回的文件名字。  
            // 注意这里使用wcout 来显示Unicode 串wszWallpaper.  wcout 是  
            // Unicode 专用,功能与cout.相同。  
            wcout << L"Wallpaper path is:\n    " << wszWallpaper <<endl << endl;  
            }  
        else  
            {  
            cout << _T("GetWallpaper() failed.") << endl << endl;  
            }  
  
        // 5. 释放接口。  
        pIAD->Release();  
        }  
    else  
        {  
        cout << _T("CoCreateInstance() failed.") << endl << endl;  
        }  
  
    // 6. 收回COM库。MFC 程序不用这一步,它自动完成。  
CoUninitialize();
/*  
在这个例子中,输出/显示Unicode 串 wszWallpaper用的是std::wcout。  
Wallpaper path is:
D:\temp\desktop\mydesktop.BMP

Press any key to continue
//*/
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3106191次
    • 积分:41399
    • 等级:
    • 排名:第91名
    • 原创:399篇
    • 转载:4555篇
    • 译文:5篇
    • 评论:611条
    文章分类
    最新评论