以编程方式调用SendTo

时间:2011-01-03 17:50:33

标签: c# .net windows winapi

如何以编程方式(.net)调用Windows资源管理器SendTo上下文菜单选项上的命令?

2 个答案:

答案 0 :(得分:3)

sendto项目是文件系统对象的事实是一个实现细节,菜单由sendto shell扩展填充,它可以扩展到包括下一个版本的Windows中的其他东西等。实际上,将sendto文件夹视为由于Windows95(powertoys/shell toys

,因此只能使用单个参数执行的快捷方式文件夹存在问题

某些sendto项目不是.lnk,而是带有注册丢弃处理程序的唯一文件扩展名(.DeskLink,.OtherFolder,.MAPIMail等)

调用sendto项的文档化方法是使用IContextMenu。无法管理的方法是在你要模拟sendto操作的对象上调用SHBindToParent(请求IID_IShellFolder)然后调用IShellFolder::GetUIObjectOf并询问IID_IContextMenu,然后可以调用IContextMenu::QueryContextMenu要填写一个HMENU,你必须找到sendto子菜单(我想它会返回sendto作为动词,如果你用IContextMenu :: GetCommandString请它)你可以用winapi菜单函数枚举子菜单和/或者IContextMenu :: GetCommandString找到你想要调用的项目,然后调用IContextMenu::InvokeCommand

答案 1 :(得分:1)

好吧,Sendto只是文件系统上的一个文件夹,所以调用一个命令只是运行一个文件...对我来说它位于:

C:\ Users \ [用户名] \ AppData \漫游\微软\的Windows \的SendTo