0

软件 Dropbox 提供了一个外壳扩展,可以将上下文菜单项添加到特定文件夹中的所有文件。其中之一会生成一个公共链接以查看所选文件。

在 C# 工具中,我想在没有任何用户交互的情况下调用此条目。我想实现与用户单击所选文件的上下文菜单项相同的行为。

我知道 shell 扩展是由一个 DLL 提供的,是否可以调用这个 DLL 来实现预期的行为?

4

1 回答 1

3

Shell 扩展实现IContextMenu,并且可以在不显示菜单的情况下执行菜单命令(有关“托管”IContextMenu 的详细信息,请参阅此博客文章)

一旦你有了菜单,你会调用 IContextMenu::GetCommandString 并寻找一个特定的动词,如果 Dropbox 没有一个有点独特的动词,你将不得不做一些 hacky,要么单独匹配菜单文本,要么调用Dropbox shell 扩展 dll 直接(DllGetClassObject 导出)并伪造所有内容(假装是 COM 和 shell),或者如果您知道 CLSID,您至少可以从 COM 获得帮助,只做 shell 部分。

有一个名为runmenu的免费软件工具,可让您使用 shell 菜单/IContextMenu(我相信您可以在某处找到副本)

于 2010-10-01T07:37:11.720 回答