WinAPI:由shell扩展提供的调用上下文菜单项

时间:2010-09-30 10:19:42

标签: winapi shell dropbox

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

有一个名为runmenu的免费工具可以让你玩shell菜单/ IContextMenu(我相信你可以在某个地方找到一个副本)