uwp - 如何将项目添加到 UWP 应用程序的资源管理器上下文菜单
问题描述
我已经使用 Desktop App Converter 将我的 WPF 应用程序转换为 appx 包。我需要在资源管理器上下文菜单中有一个项目。即用户右键单击文件并在主菜单中看到我的项目“使用应用程序执行操作”。在选择项目时,我的应用程序以所选文件的命令行参数开始。我不需要子菜单中的“windows.fileTypeAssociation”和“使用应用程序打开”。我想要我的项目在顶级菜单上。
所以,我已经完成的步骤:
- 使用 Desktop App Converter,我得到了 appx 包和 PackageFiles 文件夹。
在 Package 文件夹中,我更改了 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> ...
- 使用命令安装应用程序:add-appxpackage -path \AppxManifest.xml -Register
注意:我还没有找到我的应用程序在哪里可以获得 ClsId,这是另一个应用程序的 GUID。
所以在所有这些操作之后,我在上下文菜单中没有看到任何新项目。我之前尝试过以类似的方式执行“windows.fileTypeAssociation”。它对我有用。
研究主题我发现很多同事试图解决这个问题都没有成功,例如:
https://github.com/MicrosoftDocs/winrt-related/issues/117
概括。是否可以为 UWP 实现资源管理器上下文菜单项?如果可能的话,我做错了什么?有人成功完成了吗?任何可行的解决方案,示例?合理的手册?我在哪里可以获得“Clsid”?
解决方案
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
表示上下文菜单动词的通信服务器。
推荐阅读
- json - VBA-JSON 将 json 转换为 excel,反之亦然
- terraform - 如何在 Terraform 中编写 Azure 数据工厂的 REST 资源数据集
- apache-nifi - 等待所有文件到达-NiFi
- ruby-on-rails - 在关注点内创建关联的反向
- ios - iOS 15 WKWebview - HTML Select 标记未正确显示阿拉伯语
- ros - 如何将 IMU 获得的 3D 角速度数据积分得到线速度的误差最小化?
- php - PHP + SQLite3 根据昵称获取页面
- ios - 使用委托方法到 poptoviewcontroller 的问题 | 斯威夫特 5
- android - 新版本的 android studio 中的 gradle build 失败
- java - Java 解析响应 URLConnection 标头值