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

/*
初始化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
//*/
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值