uwp - 如何将项目添加到 UWP 应用程序的资源管理器上下文菜单

标签 uwp win-universal-app windows-10-universal desktop-bridge

我已使用 Desktop App Converter 将我的 WPF 应用程序转换为 appx 包。我需要在资源管理器上下文菜单中有一个项目。 IE。用户右键单击文件并在主菜单中看到我的项目“对应用程序执行操作”。在项目选择上,我的应用程序以所选文件的命令行参数开始。我不需要子菜单中的“windows.fileTypeAssociation”和“使用应用程序打开”。我希望我的项目位于顶级菜单上。

所以,我完成的步骤:

  1. 通过 Desktop App Converter,我获得了 appx 包和 PackageFiles 文件夹。
  2. 在 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>
    ...
    
  3. 使用命令安装应用程序: 添加-appxpackage -path\AppxManifest.xml -Register

注意:我还没有找到我的应用程序的 ClsId 在哪里,这是另一个应用程序的 GUID。

所以在所有这些操作之后,我没有在上下文菜单中看到任何新项目。我以前尝试过以类似的方式执行“windows.fileTypeAssociation”。它对我有用。

研究主题我发现很多同事试图解决这个问题都没有成功,例如:

https://github.com/MicrosoftDocs/winrt-related/issues/117

https://social.microsoft.com/Forums/azure/ru-RU/ef1af46e-a06d-4ba3-9ec8-48ce3ceb0abc/visual-studio-2017-windows-application-packaging-desktop4fileexplorercontextmenus-not-working?forum=wpdevelop&prof=required

https://social.msdn.microsoft.com/Forums/expression/en-US/d81ed0c7-a96a-4b47-a685-3f927fef9438/uwphow-to-add-an-item-into-windows-explorer-context-menu?forum=wpdevelop

总结。是否可以为 UWP 实现资源管理器上下文菜单项?如果可能的话,我做错了什么?有人成功了吗?任何可行的解决方案,示例?明智的手册?我在哪里可以获得“Clsid”?

最佳答案

CLSID 可以是同一应用 list 中声明的​​打包 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 的 comserver表示上下文菜单动词。

关于uwp - 如何将项目添加到 UWP 应用程序的资源管理器上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56146677/

相关文章:

ios - 如何启用滑动手势以在 Xamarin 表单 UWP 中引入母版页?

c# - UWP 如何在 GridView 中单击自定义项

c# - 如何从另一个项目绑定(bind) UWP 项目图像?

audio - 自定义通知声音无法播放Windows Universal App 8.1

c# - 从 UWP 调用的 PCL 汇编代码中的 MissingManifestResourceException

c# - 从多个 BitmapImage 创建 Tiff 文件

wpf - 为什么 uwp 应用需要很长时间才能启动?

c# - UWP 页面导航标识符

javascript - Cordova:UWP 应用程序上的 'Windows is undefined'

UWP:没有 StackTrace 的随机 COMException - 不可重复