- 初始化 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();