我已使用Desktop App Converter将WPF应用程序转换为appx包。我需要在资源管理器上下文菜单中有一个项目。即用户右键单击文件,然后在主菜单中看到我的项目“使用应用程序执行操作”。在选择项目时,我的应用程序从所选文件的命令行参数开始。我不需要子菜单中的“ windows.fileTypeAssociation”和“使用应用程序打开”。我希望我的商品出现在顶层菜单上。
所以,我完成的步骤:
在“程序包”文件夹中,我更改了AppxManifest.xml文件:
...
<Extensions>
<desktop4:Extension Category="windows.fileExplorerContextMenus">
<desktop4:FileExplorerContextMenus>
<desktop4:ItemType Type=".jpg">
<desktop4:Verb Id="Foo" Clsid="91dce9db-f066-366b-be01-abcdd41e5cf1"/>
</desktop4:ItemType>
</desktop4:FileExplorerContextMenus>
</desktop4:Extension>
</Extensions>
...
注意:我找不到在哪里可以为我的应用程序获取ClsId,这是另一个应用程序的GUID。
因此,在完成所有这些操作之后,上下文菜单中没有看到任何新项目。我曾尝试以类似的方式做“ windows.fileTypeAssociation”。对我有用。
重新研究主题,我发现许多同事试图解决此问题都没有成功,例如:
https://github.com/MicrosoftDocs/winrt-related/issues/117
摘要。是否可以为UWP实现资源管理器上下文菜单项?如果可能,我做错了什么?有人成功做到了吗?任何可行的解决方案,示例吗?明智的手册?在哪里可以得到“ Clsid”?
答案 0 :(得分:0)
CLSID 可以是在同一应用的清单中声明的打包COM服务器的CLSID。这是一个示例:
<desktop4:Extension Category="windows.fileExplorerContextMenus">
<desktop4:FileExplorerContextMenus>
<desktop4:ItemType Type=".txt">
<desktop4:Verb Id="Command2" Clsid="E694BDCD-DCEB-42B6-9C1A-8A604F8XXXXX" />
</desktop4:ItemType>
</desktop4:FileExplorerContextMenus>
</desktop4:Extension>
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:SurrogateServer DisplayName="context menu verb handler 2">
<com:Class Id="E694BDCD-DCEB-42B6-9C1A-8A604F89F2D1" Path="Providers.dll" ThreadingModel="STA"/>
</com:SurrogateServer>
</com:ComServer>
</com:Extension>
Clsid 是应该实现代表上下文菜单动词的IExplorerCommand
的服务器。