我正在使用UWP项目启动使用Qt开发的Win32应用程序,但是我需要传递一些参数(参数)。如果我启动不带参数的(.exe),它将起作用。 我是UWP的初学者
感谢您的帮助。
我尝试使用此代码,但未成功。
ApplicationData.Current.LocalSettings.Values["Parameters"] = tbParameters.Text;
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("Parameters"); //Parameters
答案 0 :(得分:0)
假设我正确理解了您的问题,请查看以下内容。
您不能将参数从UWP直接传递到Win32应用程序。您要做的是先将参数存储在程序包LocalSettings中,然后在Win32应用程序中检索它们。
这是我的代码,用于将四个字符串保存到LocalSettings,以便稍后可以在Win32应用程序中检索它们。再一次,请注意,我们并没有直接传递它们,我们只是将它们保存在LocalSettings中,只要Win32应用包含在我们的软件包中,它就可以访问 。
public static async void PrintFile(String string1, String, string2 String, string3 String string4 )
{
ApplicationData.Current.LocalSettings.Values["param1"] = string1;
ApplicationData.Current.LocalSettings.Values["param2"] = string2;
ApplicationData.Current.LocalSettings.Values["param3"] = string3;
ApplicationData.Current.LocalSettings.Values["param4"] = string4;
if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
{
try
{
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
}
catch (Exception Ex)
{
Debug.WriteLine(Ex.ToString());
}
}
}
然后在Win32应用程序中,只需添加以下内容,即可从LocalSettings中检索参数。
static void Main(string[] args)
{
string string1 = ApplicationData.Current.LocalSettings.Values[@"param1"] as string;
string string2 = ApplicationData.Current.LocalSettings.Values[@"param2"] as string;
string string3 = ApplicationData.Current.LocalSettings.Values[@"param3"] as string;
string string4 = ApplicationData.Current.LocalSettings.Values[@"param4"] as string;
}
编辑
如果由于某种原因这是不可行的解决方案(也许Win32应用是第三方,因此您不能修改代码),那么您仍然可以使用上面的代码来达到相同的结果。
1)创建一个新的Win32应用程序(我的示例使用控制台应用程序)
2)将参数从UWP传递到如上所述的LocalSettings。
3)如上所述,在启动Win32应用程序后,将参数从LocalSettings拖入Win32应用程序。
4)使用指定的参数从Win32应用程序启动您的3rd party .exe文件,类似以下内容...
private static Process CreateProcess(string exePath, string parameter)
{
return new Process
{
StartInfo =
{
WindowStyle = ProcessWindowStyle.Hidden,
FileName = $@"""{exePath}""",
Arguments = $@"""{parameter}""",
UseShellExecute = false,
CreateNoWindow = true
}
};
}
编辑2
为完整起见,LocalSettings存储在您的应用程序包文件夹中,可以在这里进行检索:C:\Users\"UserName"\AppData\Local\Packages\"PackageName"\Settings\settings.DAT