没有文件的SHAddToRecentDocs?

时间:2010-03-25 11:56:28

标签: windows windows-7 taskbar windows-shell

我正在玩一个IRC客户端,将它与windows 7 app bar集成。

要获得“常用”或“最近”项目列表,必须调用SHAddToRecentDocs API。 我想将最近访问过的IRC频道添加到IRC应用程序的Windows 7 Jumplist中。 现在,我的问题是,文件系统中不存在IRC通道。并且SHAddToRecentDocs似乎坚持要获取某种文件系统对象。

我试图通过创建一个指向我的应用程序的IShellItem来解决它,并给它一个命令行来启动该通道。然而,shell正在反弹,到目前为止还没有明显添加我对跳转列表的任何“最近文档”尝试。

如果不创建某种完全不需要的文件系统对象,是否无法做到这一点?

1 个答案:

答案 0 :(得分:3)

question 1671793答案中的代码是其中的一部分。您需要IShellLink而不是IShellItem。我一点一点地尝试了这个代码。在使用IPropertyStore设置标题之前,事情无效。 <{1}}代码似乎没有必要。

所有这些都说,虽然当我右键单击我的应用程序的任务栏图标时,我现在出现了项目,但我还没有将它们作为我的应用程序的子菜单显示在开始菜单上(如word docs do ,例如),所以我还没有完全满意。我认为这是IPersistFile文档中警告的结果:

  

可执行文件(.exe)从Windows XP及更高版本中最近使用的文档列表中过滤掉。虽然SHAddToRecentDocs将接受可执行文件的路径,但该文件不会出现在Recent Items列表中。

这是我的代码。由于我的开发环境使用较旧的Windows SDK(因此我必须为自己创建PKEY_Title)而且我的应用程序需要支持Win2k(所以我不想绑定到像{{1}这样的函数,所以我正在跳过一些箍这需要更新的Windows版本。)

SHAddToRecentDocs