UWP应用程序是否可以使用任意命令行参数启动其桌面桥(完全信任的应用程序组件)?我看到能够指定"参数组" (请参阅https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher),但看起来只支持使用预定义的ParameterGroup
。我需要以编程方式确定(在启动时)任意命令行参数来启动UWP。这是可能的,如果是的话,怎么样?
答案 0 :(得分:8)
今天不可能这样。
完成该方案的一种快速方法是让UWP将命令字符串写入本地应用程序数据/设置,该数据/设置在两个进程之间共享。因此,完全信任的进程可以在从那里启动后获取命令字符串。
更复杂的解决方案是在两个进程之间建立app服务连接,并通过该连接传递命令字符串。如果您需要在两个流程之间来回沟通,这将非常有用。
如果由于某种原因您无法更改现有的完全信任流程代码,您可以在您的包中添加一个额外的EXE,它只是从应用数据中读取命令字符串,然后启动您的实际完全信任EXE使用这些参数(使用Process.Start()或等效的东西)。
修改强> 我在博客上发布了一些更多细节和示例: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-2/
答案 1 :(得分:1)
我们无法将参数动态传递给完全信任过程。但是,我们可以使用LocalSettings传递它。
将参数添加到“本地设置”并启动完整的信任过程: 在C ++中:
auto settings = Windows::Storage::ApplicationData::Current->LocalSettings;
settings->Values->Insert("arg1", "val1");
settings->Values->Insert("arg2", "val2");
// Launch Full trust proc
create_task(FullTrustProcessLauncher::LaunchFullTrustProcessForCurrentAppAsync()).then([](task<void> t) {/* ... */});
在完全信任过程代码中,
auto settings = Windows::Storage::ApplicationData::Current->LocalSettings;
auto val1 = settings->Values->Lookup("arg1")->ToString();