3.COM使用实例——快捷方式创建和解析
来源:互联网 发布:java文件命名 编辑:程序博客网 时间:2024/05/22 05:18
平常我们操作Windows系统都是在资源管理器explorer.exe中,微软提供了COM接口供我们操作和扩展资源管理器行为。实际上微软的很多接口是通过COM来开放的,COM已经成为Windows系统事实上的接口标准了。上节介绍如何编写最简单的COM,本节通过[快捷方式创建和解析]看下如何使用COM调用Windows相关功能。
1.创建快捷方式
//功能:创建快捷方式//参数:pszShortCut—快捷方式名称,lpss-快捷方式参数HRESULT SHCreateShortcutEx(LPTSTR pszShortCut, LPSHORTCUTSTRUCT lpss){if (lpss == NULL){return E_FAIL;}IShellLink* pShellLink = NULL;IPersistFile* pPersistFile = NULL;//内存中创建快捷方式HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, reinterpret_cast<LPVOID*>(&pShellLink));if (FAILED(hr)){return hr;}pShellLink->SetPath(lpss->pszTarget);pShellLink->SetDescription(lpss->pszDescription);pShellLink->SetHotkey(lpss->wHotkey);pShellLink->SetIconLocation(lpss->pszIconPath, lpss->wIconIndex);//保存到磁盘上hr = pShellLink->QueryInterface(IID_IPersistFile, reinterpret_cast<LPVOID*>(&pPersistFile));if (FAILED(hr)){pShellLink->Release();return hr;}hr = pPersistFile->Save(pszShortCut, TRUE);pShellLink->Release();pPersistFile->Release();return hr;}
2.解析快捷方式
//功能:解析快捷方式//参数:pszShortCut—解析快捷方式,lpss-解析出的快捷方式参数HRESULT SHResolveShortcut(LPTSTR pszShortCut, LPSHORTCUTSTRUCT lpss){if (lpss == NULL){return E_FAIL;}IShellLink* pShellLink = NULL;IPersistFile* pPersistFile = NULL;HRESULT hr = E_FAIL;do{//获取操作接口hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, reinterpret_cast<LPVOID*>(&pShellLink));if (FAILED(hr)){break;}hr = pShellLink->QueryInterface(IID_IPersistFile, reinterpret_cast<LPVOID*>(&pPersistFile));if (FAILED(hr)){break;}//加载快捷方式到内存Storagehr = pPersistFile->Load(pszShortCut, STGM_READ);if (FAILED(hr)){break;}//解析快捷方式hr = pShellLink->Resolve(NULL, SLR_ANY_MATCH);if (FAILED(hr)){break;} WIN32_FIND_DATA fd;//导出信息pShellLink->GetPath(lpss->pszTarget, MAX_PATH, &fd, SLGP_SHORTPATH);pShellLink->GetDescription(lpss->pszDescription, MAX_PATH);pShellLink->GetHotkey(&lpss->wHotkey);pShellLink->GetIconLocation(lpss->pszIconPath, MAX_PATH, &lpss->wIconIndex);}while(false);if(pShellLink){pShellLink->Release();}if(pPersistFile){pPersistFile->Release();}return hr;}
可以看到操作COM接口很简单,创建对应的COM对象,不需要关心具体实现的位置和细节,类似功能的接口可以互查。
完整代码下载链接
原创,转载请注明来自http://blog.csdn.net/wenzhou1219
阅读全文
0 0
- 3.COM使用实例——快捷方式创建和解析
- 解析和创建快捷方式
- C++ 和 com 创建快捷方式
- Android — 创建快捷方式
- 用masm32创建快捷方式--使用com的演示程序
- 使用命令行WScript和vbs创建快捷方式
- 【COM/ATL】创建Url快捷方式
- Ubuntu使用技巧——如何创建图标快捷方式
- Android学习—— 创建和删除快捷方式以及判断是否有快捷方式
- Linux ——创建快捷方式
- 0.VC(Custom)-创建和解析桌面快捷方式(示例源码)
- 使用ATL创建COM程序实例
- 使用IShellLink 创建快捷方式
- 使用C#创建快捷方式
- 创建和操作快捷方式
- 创建和卸载快捷方式
- Android之快捷方式一——通过应用程序创建快捷方式
- 创建普通快捷方式和Internet快捷方式
- 解决win7系统任务栏音量图标消失
- 圆环
- 来玩玩博客看看
- python3+opencv3+mac/ubuntu
- 条款12:复制对象时勿忘其每一个成分
- 3.COM使用实例——快捷方式创建和解析
- Qt:当前窗口注册全局键盘消息
- 0611 js Window
- Intersection of Two Arrays
- POJ 1299 Polar Explorer 笔记
- Python之sort()函数详解
- HorizontalScrollView 使用
- Centos7安装MariaDB
- Python基础(四)—逻辑行和物理行