簡體   English   中英

如何使用UWP項目中的4個參數啟動Win32可執行桌面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM