ACF Does Shell - 第 2 部分






2.09/5 (4投票s)
2004年7月1日
1分钟阅读

26668

256
本文档展示了如何使用基于 ACF 构建的 WinShell 库来创建和打开 Shell 链接。

引言
在我的上一篇文章 ACF 实现 Shell – 第一部分 中,我讨论了如何使用 Item 类来导航 Windows Shell 并检索项目信息。 在本文中,我将向您展示如何使用 Item 和 LinkItem 类来创建和打开 Shell 链接(快捷方式)。 如果您不熟悉 Item 类,请先查看我的上一篇文章。
创建 Shell 链接
以下代码片段展示了如何创建一个指向“我的文档”的链接,然后将其保存到桌面
ItemPtr target = new Item(SpecialFolder::Personal); // My Documents ItemPtr location = Item::get_Desktop(); // Desktop LinkItemPtr link = new LinkItem(target); // The link link->Save(location);
如您所见,API 非常简单明了。
打开现有的 Shell 链接
以下代码片段展示了如何打开现有的链接文件并检索其属性(描述、目标、参数等)
StringPtr path = ...; // Path to a file ItemPtr item = new Item(path); if (item->IsLink) { LinkItemPtr link = item->LinkItem; StringPtr description = link->Description; StringPtr targetPath = link->Target->FileSysPath; StringPtr args = link->Arguments; StringPtr dir = link->WorkingDirectory; }
示例应用程序演示了如何使用这些类。
Item 类
属性
- bool IsLink;- 获取一个值,指示该对象是否为快捷方式。 
- LinkItemPtr LinkItem;- 获取一个 - LinkItem对象,表示一个快捷方式项目。
对于其他成员,请查看我的上一篇文章。
LinkItem 类
构造函数
- LinkItem();- 构造一个新的快捷方式。 
- LinkItem(Item* target);- 使用指定的target构造一个新的快捷方式。 
属性
- StringPtr Description;- 获取或设置描述字符串。 
- ItemPtr Target;- 获取或设置目标。 
- StringPtr Arguments;- 获取或设置命令行参数。 
- StringPtr WorkingDirectory;- 获取或设置工作目录。 
- bool IsDirty;- 获取一个值,指示自上次保存以来该对象是否已更改。 
方法
- void Resolve();- 解析快捷方式。 参见 - IShellLink::Resolve。
- void Save();- 保存快捷方式。 参见 - IPersistFile::Save。
- void Save(Item* parentFolder);- 将快捷方式保存到指定的location。 参见 - IPersistFile::Save。
- void Save(Item* parentFolder, String* name, bool rememberSaveLocation = true);- 将快捷方式保存到指定的location,并使用指定的名称。 参见 - IPersistFile::Save。
参考
- ACF.
- Windows Shell:请参阅 MSDN
- Longhorn SDK Windows Explorer.
