微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将命令行参数传递给 C# .NET 应用程序而不使用 UWP 应用程序内的清单文件

如何解决将命令行参数传递给 C# .NET 应用程序而不使用 UWP 应用程序内的清单文件

我有一个正在开发的 UWP 应用程序,它启动另一个应用程序,该应用程序又启动一个 bat 文件,该文件执行某些任务,以便不阻塞 UI 线程,同时具有执行任务的足够权限。我尝试启动的 EXE 是一个单独的 .NET 框架应用程序,它在同一个 SLN 中,但在一个应用程序包项目中是一个不同的项目。但是,UWP 应用程序启动的第二个 C# 应用程序需要命令行参数,该参数的频率可能由应用程序的用户决定,因此不能将它们硬编码到清单文件中,并使用以下命令:>

await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("ArgumentGroupName");

上述命令是否有替代方法,允许传入参数,同时每次启动时都可以更改参数值?除了对 SO 帖子的一条评论外,我已经搜索了几天没有找到任何关于此的主题,我找不到说它可以在不使用应用程序清单文件的情况下完成。我正在使用最新版本的 Visual Studio 2019 和最新的 .NET Framework (4.8) 和 Windows SDK(与 Windows 2004 兼容)。第二个 C# 应用使用 .NET Framework 运行,主 UWP 应用使用 Windows SDK。

解决方法

在不使用 UWP 应用程序内的清单文件的情况下将命令行参数传递给 C# .NET 应用程序

根据您的要求,您可以使用 LocalSettings 传递启动器参数。将参数存储在 UWP 客户端并从启动器中检索值,然后使用检索到的参数调用进程开始。

例如

UWP 客户端

private async void btnClick_Parameters(object sender,RoutedEventArgs e)
{
    if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract",1,0))
    {
        // store command line parameters in local settings
        // so the Lancher can retrieve them and pass them on
        ApplicationData.Current.LocalSettings.Values["parameters"] = "command parameter";

        await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("Parameters");
    }
}

启动器

string parameters = ApplicationData.Current.LocalSettings.Values["parameters"] as string;
Process newProcess = Process.Start(rootPath + @"WPF\WPF.exe",parameters);

有关更多详细信息,请参阅 stanfen 的博客 UWP with Desktop Extension – Part 2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?