• 在 DotNetCore 3.0 程序中使用通用协议方式启动文件关联应用


    问题描述

    在传统的基于 .NET Framework 的 WPF 程序中,我们可以使用如下代码段启动相关的默认应用:

    # 启动默认文本编辑器打开 helloworld.txt
    Process.Start("helloworld.txt");
    
    # 启动默认浏览器打开 https://hippiezhou.fun/
    Process.Start("https://hippiezhou.fun/");
    

    但是上述协议方式在 .NET Core 中不再适用,当我们使用上述方式进行操作,程序会给我们爆如下的错误:

    神樹桜乃 大佬提醒,我特意看了一下 ProcessStartInfo 的说明,如下图所示:

    所以,这样一来我们就有两种方式来启动文件的关联应用了。

    解决方法

    方法一

    手动创建 ProcessStartInfo 对象,并设置 UseShellExecute=True,示例代码如下所示:

    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.UseShellExecute = true;
    startInfo.FileName = "https://hippiezhou.fun";
    Process.Start(startInfo);
    

    方法二

    使用 UWP平台下的 中的 Launcher 来启动关联应用。

    注:使用如下方法的前提是需要我们的机器上安装 Windows 10 任一版本的 SDK,否则无法正常使用。

    做过 UWP 开发的朋友应该对 Launcher 族下的 API 有所了解,这个下面的相关方法能够启动系统默认应用。我们想在 .NET Core 3.0 WPF 使用这个族的 API 需要进行一些配置才可以。

    首先,我们需要修改我们的 .csproj 文件,使项目能够使用上述的 API,修改如下所示:

    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <UseWPF>true</UseWPF>
      </PropertyGroup>
    
      <!--新增节点-->
      <ItemGroup>
        <PackageReference Include="System.Runtime.WindowsRuntime" Version="4.3.0" />
      </ItemGroup>
      
      <!--新增节点-->
      <ItemGroup>
        <Reference Include="Windows">
          <HintPath>$(MSBuildProgramFiles32)Windows Kits10UnionMetadata10.0.17763.0Windows.winmd</HintPath>
          <IsWinMDFile>true</IsWinMDFile>
          <Private>false</Private>
        </Reference>
      </ItemGroup>
    
    </Project>
    

    然后,重新加载我们的项目,这个时候就可以使用 Launcher 了。比如,我们可以使用如下方式调用默认浏览器打开目标网址:

    await Launcher.LaunchUriAsync(new Uri("https://hippiezhou.fun/"));
    

    相关参考

  • 相关阅读:
    第五周反向传播算法
    PHP数组排序
    <meta-data>
    Android之Intent
    Fragment生命周期
    前端后台学习笔记汇杂
    IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
    用java将excel中数据导入mysql
    幸运观众抽奖
    JTextField
  • 原文地址:https://www.cnblogs.com/hippieZhou/p/10683191.html
Copyright © 2020-2023  润新知