如何使用一个提供单接口的COM对象QueryInterface()函数
2010-11-04 11:47
489 查看
初始化 COM 库;
创建一个用于建立快捷方式的COM 对象并取得IShellLink 接口;
调用IShellLink 接口的SetPath()方法;
调用对象的QueryInterface()函数并取得IPersistFile接口;
调用IPersistFile 接口的Save()方法;
释放接口;
收回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对象QueryInterface()函数
- 国家气象局提供的天气预报接口 如何使用
- 利用ATL创建com组件和如何在程序中使用组件的接口函数和设置接口的属性
- ZeroMQ接口函数之 :zmq_z85_encode – 使用Z85算法对一个二进制秘钥进行加密,输出可打印的文本
- 数值使用固定的字符分割后 形成一个新的字符串 C#提供了该函数
- facade 提供一个接口,通过这个接口,可以使一个子系统更容易使用。
- 给用C++写的dll写一个接口函数供C#使用
- QT 如何实现使用 QPainter 的 drawPixmap() 函数将图片文件绘制到一个 QLabel、QPushButton 或者其他的一些设备上?
- Codewars简单使用和 其中一道题,用JavaScript实现一个函数,求一个正数的次大数字,拿自己的解法和大神相比,简直对不起JavaScript给我提供的 那么多便利
- VB编写各类COM对象(特别是ASP)时,如何让外部对象使用含有可选参数的函数
- 如何使用指针从函数返回一个数组。
- 若接口中有多个函数,如何使用lambda表达式
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- Win7中如何在服务中启动一个当前用户的进程——函数CreateProcessAsUser()的一次使用记录
- 使用sqlite3的接口函数完成一个用户登录验证功能模块设计 要封装成独立函数,在独立的main中调用测试;
- 不是使用C/C++函数如何复制文件到另外一个目录
- 如何使用JRtpLib3.5.0库中的函数和类对象和让JRTPLIB 发送/接收数据时使用同一个端口收藏
- 如何使用Fread和Fwrite写一个复制文件的函数
- 如何在c/c++中,做一个可以接收任意二维数组的函数接口,并在函数中能以下标的形式引用元素
- 如何使用form嵌套和接口来设计一个复杂的用户界面