Как запустить исполняемый рабочий стол win32 с 4 аргументами из проекта UWP

Я использую проект UWP для запуска приложений win32, разработанных с помощью Qt, но мне нужно передать некоторые параметры (аргументы). Если я запускаю (.exe) без параметров, он работает. Я новичок в UWP

Спасибо за вашу помощь.

Я пытался использовать этот код, но безуспешно.

ApplicationData.Current.LocalSettings.Values["Parameters"] = tbParameters.Text;            
           await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("Parameters"); //Parameters
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
641
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что я правильно понял ваш вопрос, пожалуйста, взгляните на следующее.

Вы не можете передавать параметры из 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) Потяните параметры из LocalSettings в приложение Win32, когда оно запустится, как указано выше.

4) Запустите сторонний файл .exe из приложения Win32 с указанными параметрами, например, следующим образом...

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

вот еще одно решение: Process.Start(@path.exe", параметр);

Algorithm 05.06.2019 14:23

В консольном приложении все ОК, а в графическом НЕ РАБОТАЕТ, т.к. класс Process не распознается,

Algorithm 05.06.2019 15:03

Да, конечно, я просто поделился своим примером, используя консольное приложение в качестве эталона. Рад, что это сработало для вас, если бы вы могли отметить этот ответ как правильный, чтобы он мог помочь будущим пользователям, это было бы здорово :)

Adam McMahon 05.06.2019 15:46

Спасибо @Adam McMahon, к сожалению, я еще не решил свою проблему. Я создал консольное решение в том же проекте uwp, но не смог запустить консольное приложение с кнопки. в консольном приложении мне удалось запустить исполняемый файл с параметром, благодаря вашей помощи. вкратце: 1) app1 типа uwp -> нажать на кнопку запускающую app2 типа console. Я застрял здесь, я не знаю, как это сделать. 2) app2 -> автоматически запускать внешнее app3 с параметром.

Algorithm 06.06.2019 09:25

ЭТО РАБОТАЕТ, СПАСИБО ЗА ПОМОЩЬ

Algorithm 06.06.2019 17:47

Рад помочь. Не могли бы вы отметить это как правильное, чтобы помочь будущим пользователям :)

Adam McMahon 07.06.2019 10:25

Другие вопросы по теме