【问题标题】:How do you implement Launching a win32 exe with command line arguments from an UWP app?如何使用 UWP 应用程序的命令行参数启动 win32 exe?
【发布时间】: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。
  • 是的!谢谢!

标签: c# winapi uwp arguments activation


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 2013-04-25
    • 1970-01-01
    • 2018-07-25
    • 2018-02-05
    • 2016-09-03
    • 2018-12-08
    • 2017-03-08
    相关资源
    最近更新 更多