![](/img/trans.png)
[英]How do you implement Launching a win32 exe with command line arguments from an UWP app?
[英]How to launch win32 executable desktop with 4 arguments from UWP project
我正在使用UWP項目啟動使用Qt開發的Win32應用程序,但是我需要傳遞一些參數(參數)。 如果我啟動不帶參數的(.exe),它將起作用。 我是UWP的初學者
謝謝你的幫助。
我嘗試使用此代碼,但未成功。
ApplicationData.Current.LocalSettings.Values["Parameters"] = tbParameters.Text;
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("Parameters"); //Parameters
假設我正確理解了您的問題,請查看以下內容。
您不能將參數從UWP直接傳遞到Win32應用程序。 您要做的是先將參數存儲在包LocalSettings中,然后在Win32應用程序中檢索它們。
這是我的代碼,用於將四個字符串保存到LocalSettings,以便稍后可以在Win32應用程序中檢索它們。 再次注意,我們沒有直接傳遞它們,我們只是將它們保存在LocalSettings中, 只要它包含在Package中 ,我們的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中拉出參數,如上所述。
4)使用指定的參數從Win32應用程序啟動您的第三方.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.