Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 混合使用.NET和文件上下文菜单的推荐方法_C#_Wpf_Shell_Contextmenu_Windows Shell - Fatal编程技术网

C# 混合使用.NET和文件上下文菜单的推荐方法

C# 混合使用.NET和文件上下文菜单的推荐方法,c#,wpf,shell,contextmenu,windows-shell,C#,Wpf,Shell,Contextmenu,Windows Shell,我有一份C#WPF申请。它设计用于处理任何和所有文件。现在,它通过命令行参数以及拖放到主窗口中的控件来接受“输入”。但是,理想情况下,我希望人们右键单击任何文件/多个文件,并让他们能够简单地单击“A将其个性化”。(这不是真名。:P) 我几年前就有过使用上下文菜单的经验,所以总而言之,它并不太流行。因此,我正在寻求有关实现此功能的最佳方法的建议。下面的所有示例都基于我使用W7看到的内容 一般来说,我知道基本上有两种方式:纯注册表和registry+COM对象 前者有一定的优雅,因为我不想要任何特别

我有一份C#WPF申请。它设计用于处理任何和所有文件。现在,它通过命令行参数以及拖放到主窗口中的控件来接受“输入”。但是,理想情况下,我希望人们右键单击任何文件/多个文件,并让他们能够简单地单击“A将其个性化”。(这不是真名。:P)

我几年前就有过使用上下文菜单的经验,所以总而言之,它并不太流行。因此,我正在寻求有关实现此功能的最佳方法的建议。下面的所有示例都基于我使用W7看到的内容

一般来说,我知道基本上有两种方式:纯注册表和registry+COM对象

前者有一定的优雅,因为我不想要任何特别的东西;但是,从文档中可以看出,这些菜单项总是聚集在与主文件操作(打开、预览、打印)相同的位置。然而,我希望我的物品出现在图腾柱的下方。如果我查看我的个人上下文菜单中的随机文件,我希望它位于“现场”UltraEdit和Malwarebytes反恶意软件本身。将我的条目粘贴在
HKCR\*\shell\AwesomeTest
下可以获取我的项目,但无论我选择的
位置是什么,我都会得到两个我不喜欢的极端:
Top
将其置于默认项目之上,
Bottom
将其置于属性之上。我希望它介于与以前的版本共享和恢复之间,而在以前的版本中,大多数通用工具似乎都能找到归宿

更多的注册表挖掘似乎指出了我希望模仿使用COM对象路由的应用程序。这将使我(我相信)回到本机代码。这将带来我试图避免的所有32位和64位开发的麻烦

我有什么遗漏吗?同样地,除了我仔细查看并发现没有什么帮助(因为它似乎略过了很多,而没有深入到关于位置等更精确的细节),关于这个问题有什么好的来源吗

还有一件事我还没有弄清楚,那就是如何将IDropTarget支持正确地添加到我的.NET WPF应用程序中,因此也欢迎提供相关信息


如果有人能马上给出答案,那就太好了,但我主要是想找到一条正确的道路,而不是在死胡同上浪费几天时间。似乎有很多(

ICONTrimeMelue::QueEntExtEnMeNuUE)(shell扩展在C++的域中,C C中非常不愉快,需要.NET 4。使用它的示例项目。

< P>文本菜单::QueIdCurrestMeNuu()shell扩展位于C++的域中,在C语言中非常不愉快,需要.NET 4。使用它的示例项目。

谢谢回复,但这是故事的错误方面。我希望把我的WPF应用程序放到文件上下文菜单中的特定位置,而不是通过我的WPF应用程序显示/访问/等我的文件。似乎最好的替代方法是将32位和64位上下文菜单处理程序dll放入组合中,以在正确的位置显示项目。(注意:停止传递坏消息)。谢谢你的回复,但这几乎是错误的一面。我希望将我的WPF应用程序放在特定位置的文件上下文菜单中,而不是让我的WPF应用程序通过显示/访问/etc来显示我的文件。不过,到目前为止,似乎最好的替代方法是将32位和64位上下文菜单处理程序dll放入组合中,以显示注意:不要再传递坏消息了。