如何使用一个提供单接口的COM对象QueryInterface()函数

来源:互联网 发布:网络恐怖主义 编辑:程序博客网 时间:2024/05/18 10:40
  • 初始化 COM 库;
  • 创建一个用于建立快捷方式的COM 对象并取得IShellLink 接口;
  • 调用IShellLink 接口的SetPath()方法;
  • 调用对象的QueryInterface()函数并取得IPersistFile接口;
  • 调用IPersistFile 接口的Save()方法;
  • 释放接口;
  • 收回COM库;
CString       sWallpaper = wszWallpaper;  // 将墙纸路径转换为ANSIIShellLink*   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();
原创粉丝点击