第二个例子展示了如何使用一个提供单接口的COM对象QueryInterface()函数

转载 2012年03月31日 08:45:12
使用多接口的COM对象
    第二个例子展示了如何使用一个提供单接口的COM对象QueryInterface()函数。其中的代码用外壳的Shell Link组件对象类创建我们在第一个例子中获得的墙纸文件的快捷方式
以下是编程步骤:

初始化COM 库。 
创建一个用于建立快捷方式的COM 对象并取得IShellLink 接口。
调用IShellLink 接口的SetPath()方法
调用对象的QueryInterface()函数并取得IPersistFile接口。
调用IPersistFile 接口的Save()方法。
释放接口
收回COM库

CString       sWallpaper = wszWallpaper;  // 将墙纸路径转换为ANSI
IShellLink*   pISL;
IPersistFile* pIPF;

    // 1. 初始化COM库(让Windows 加载DLLs). 通常在InitInstance()中调用
    // CoInitialize ( NULL )或其它启动代码。MFC 程序使用AfxOleInit() 。

    CoInitialize ( NULL );

    // 2. 使用外壳提供的Shell Link组件对象类创建COM对象。.
    // 第四个参数通知COM 需要什么接口(这里是IShellLink)。

    hr = CoCreateInstance ( CLSID_ShellLink,
                            NULL,
                            CLSCTX_INPROC_SERVER,
                            IID_IShellLink,
                            (void**) &pISL );

    if ( SUCCEEDED(hr) )
        {
        // 3. 设置快捷方式目标(墙纸文件)的路径。
        hr = pISL->SetPath ( sWallpaper );

        if ( SUCCEEDED(hr) )
            {
            // 4. 获取这个对象的第二个接口(IPersistFile)。
            hr = pISL->QueryInterface ( IID_IPersistFile, (void**) &pIPF );

            if ( SUCCEEDED(hr) )
                {
                // 5. 调用Save() 方法保存某个文件得快捷方式。第一个参数是
                // Unicode 串。
                hr = pIPF->Save ( L"C:\\wallpaper.lnk", FALSE );

                // 6a. 释放IPersistFile 接口。
                pIPF->Release();
                }
            }

        // 6. 释放IShellLink 接口。
        pISL->Release();
        }

    // 输出错误信息部分这里省略。

    // 7. 收回COM 库。MFC 程序不用这一步,它自动完成。
    CoUninitialize();

相关文章推荐

第一个例子展示的是单接口COM对象

用例子代码总结上述内容 下面用两个例子演示本文所讲的COM概念。代码中还包含了本文的例子工程。 使用单接口COM对象 第一个例子展示的是单接口COM对象。这可能是你碰到得最简单的例子。...

COM技术-第三章 QueryInterface函数.ppt

  • 2012年08月01日 15:12
  • 2.86MB
  • 下载

COM笔记-QueryInterface函数

客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义 :如下        Interface I...

IUnKNown接口——QueryInterface函数

COM笔记-QueryInterface函数 fangyukuan 2010.6.1 客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口...

创建一个用于建立快捷方式的COM 对象并取得IShellLink 接口。

/* 第二个例子展示了如何使用一个提供单接口的COM对象QueryInterface()函数。 其中的代码用外壳的Shell Link组件对象类创建我们在第一个例子中获得的 墙纸文件的快捷方式 以...

com QueryInterface

客户同组件的交互都是通过一个接口完成的。在客户查询组件的其他接口时,也是通过接口完成的。这个接口就是IUnknown。它在UNKNWN.H头文件定义 :如下...

QueryInterface详解 COM

QueryInterface 接口查询 IUnknown:        所有的COM接口均需要继承IUnknown接口。因此,若某个用户拥有一个IUnknown接口指针,它并不需要知道它所拥有的...

小鸟 组合模式 构造函数 传入一个新的接口实现对象 添加新功能

package day08.chouXiangLeiHeJieKou; public class TestBirds { /**组合 : * 本来 设计的 Bird 类和 其子类中的 Fir...

一个例子理解 C++ 面向对象——构造函数、虚函数、抽象基类

#include using namespace std; void TestException(int argc) { try { if (argc != 2) ...

COM聚合技术中的QueryInterface

最近在看COM聚合技术时遇到一个关于QueryInterface的问题。在《COM技术内幕》和《COM原理与应用》中都是寥寥数句带过,看起来很易理解,我却看了许久才有所领悟。 先说明一下,为了节省篇...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第二个例子展示了如何使用一个提供单接口的COM对象QueryInterface()函数
举报原因:
原因补充:

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