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

原创 2012年03月31日 08:43:29
/*
初始化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
//*/
}

调用 COM 对象

调用 COM 对象 大多数 Windows 程序员都熟悉组件对象模型(Component Object Model,COM)。在某程度上,.NET 框架 就是为了替换 COM,但是,系统仍然...
  • hadstj
  • hadstj
  • 2014年06月23日 16:41
  • 1211

java中hashCode()与equals()详解

首先之所以会将hashCode()与equals()放到一起是因为存在一个相同的作用:用来比较某个东西。其中hashCode()主要是用在hash表中提高 查找效率,而equals()则相对而言使用更...
  • htq__
  • htq__
  • 2016年04月08日 17:22
  • 1229

【摘抄整理】算法竞赛入门经典(第2版)——语言篇(1-2章)

算法
  • W_ning1015
  • W_ning1015
  • 2016年07月27日 10:58
  • 352

获取com对象的所有属性和方法

package com.bovy.officehelper; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; ...
  • KimmKing
  • KimmKing
  • 2008年06月12日 15:00
  • 3496

java 打印对象时时如何调用对象toString()方法的

print Object toString()
  • u011982967
  • u011982967
  • 2017年03月11日 01:31
  • 919

C++和C#相互调用COM组件的方法简介

 1、在VS2005中,C#编写DLL并使用C++调用 2、在VS2005中C#编写的COM组件,使用VC6.0调用 3、在VC6.0中编写COM组件,使用VS2005 ...
  • u011555996
  • u011555996
  • 2017年07月25日 15:28
  • 1036

C#调用COM组件

这部分描述了在托管代码中调用COM组件的方法,现存的COM组件在托管代码中作为中间件或者独立的功能实体是很有价值的资源向.NET Framework报露COM组件1. Import a type li...
  • daoyuly
  • daoyuly
  • 2009年02月23日 12:56
  • 16443

C++学习笔记32——构造函数

1,基本概念 (1)只要创建类类型的新对象都要执行构造函数; (2)构造函数的名字与类的名字相同,并且不能指定返回类型; (3)构造函数不能声明为const,即便是const对象,也是用普通的构造函数...
  • yellowston
  • yellowston
  • 2015年12月05日 18:14
  • 227

C# 互操 调用COM组件

本专题概要: 引言如何在C#中调用COM组件——访问Office 互操作对象在C# 中调用COM组件的实现原理剖析错误处理小结   一、引言   COM(Component Object ...
  • leilonghao
  • leilonghao
  • 2016年09月30日 09:21
  • 814

C#中调用COM对象

C#中调用COM对象
  • u011162260
  • u011162260
  • 2015年05月22日 20:42
  • 1728
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:调用COM对象的GetWallpaper()方法。 如果GetWallpaper()成功,则输出/显示墙纸文件名
举报原因:
原因补充:

(最多只允许输入30个字)