如何使用 UWP 应用程序的命令行参数启动 win32 exe?

Posted

技术标签:

【中文标题】如何使用 UWP 应用程序的命令行参数启动 win32 exe?【英文标题】:How do you implement Launching a win32 exe with command line arguments from an UWP app? 【发布时间】:2021-04-30 21:31:15 【问题描述】:

我正在尝试启动从我的 UWP 应用程序获取命令行参数的旧版 win32 软件。

win32 应用程序 (xxx) 本身不支持激活协议和 URI,但我可以通过使用以下注册表项来添加它:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\xxx]
@="URL:xxx"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\xxx\shell]

[HKEY_CLASSES_ROOT\xxx\shell\open]
@=""

[HKEY_CLASSES_ROOT\xxx\shell\open\command]
@="\"C:\\Program Files (x86)\\xxx\\xxx.exe\" \"%1\""

我在我的 UWP 应用中实现了以下功能,但它只启动应用并且不传递参数:

 await Launcher.LaunchUriAsync(new Uri("xxx:aaa=123"));

如何将命令行参数从 UWP 传递给 Win32 应用程序?

我不介意创建 Win32 应用程序或控制台应用程序作为中间人来读取激活协议并将其转换为命令行参数并运行 win32,但找不到任何解决方案。

谢谢。

【问题讨论】:

您可以尝试使用xxx:?aaa=123吗? 是的 - 我试过 xxx:\\aaa=123。但是,它将参数 (%1) 作为一个整体传递,包括协议。如何从 %1 中删除或替换 xxx:\\。 你能显示完整的收到的参数吗? 请检查@="\"C:\\Program Files (x86)\\xxx\\xxx.exe\" \"%1\"",默认包含%1。 是的!谢谢! 【参考方案1】:

我试过 xxx:\aaa=123。但是,它将参数 (%1) 作为一个整体传递,包括协议。如何从 %1 中删除或替换 xxx:\

请检查@="\"C:\\Program Files (x86)\\xxx\\xxx.exe\" \"%1\"",它默认包含%1。您可以手动删除它。

【讨论】:

以上是关于如何使用 UWP 应用程序的命令行参数启动 win32 exe?的主要内容,如果未能解决你的问题,请参考以下文章

UWP: 通过命令行启动 UWP 应用

Win10系统UWP应用系统设置启动命令都有哪些

UWP: 通过命令行启动 UWP 应用

2019-11-25-win10-uwp-通过命令行脚本开启旁加载

如何手动查看一个应用程序的启动参数?

如何将“安装”目标添加到 Xamarin.UWP .csproj 文件?