首页 > 解决方案 > 如何使用 UWP 应用程序的命令行参数启动 win32 exe?

问题描述

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

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,但找不到任何解决方案。

谢谢。

标签: c#winapiuwpargumentsactivation

解决方案


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

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


推荐阅读