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.