Как передать строку в приложение UWP и запустить ее из приложения Windows Forms - PullRequest
0 голосов
/ 12 сентября 2018

В этом официальном документе MSDN описывается, как обмениваться данными между приложениями универсальной платформы Windows (UWP). Но можем ли мы передать строку в приложение UWP из приложения Windows Forms и запустить приложение UWP из приложения Windows Forms? Я не нашел никакого документа для этого сценария. Я использую C #, но язык не имеет значения в этом сценарии.

ПРИМЕЧАНИЕ : В нашем случае это длинная строка, содержащая данные, которые приложение Windows Forms хочет передать в приложение UWP, которое использует эти данные.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

В дополнение к ответу @Martin Zikmund; эта статья объясняет, как вы можете запустить приложение UWP из командной строки, которая в основном делает то же самое, что и Process.Start, но может быть проще в сценариях сценариев.Однако работает не на всех устройствах.

c:\> explorer.exe shell:appsFolder\put-your-PackageFamilyName-here!put-your-app-ID-here

Приложение строки запроса также должно работать.

Обратите особое внимание на то, как получить параметры, если вы их сами не задавали:

Перейдите к InstallLocation, соответствующему PackageFamilyName Откройте AppxManifest.xml Найдите «Executable =» для нужного приложения.(Поскольку некоторые пакеты приложений содержат более одного приложения, такая почта и календарь находятся в одном пакете) В той же строке найдите идентификатор приложения

Пример для открытия почтового приложения:

shellr.exe: appsFolder \ microsoft.windowscommunicationsapps_8wekyb3d8bbwe! Microsoft.windowslive.mail

И, еще один полный список команд

0 голосов
/ 13 сентября 2018

Самый простой способ сделать это - использовать пользовательскую схему URI, а затем запустить приложение, используя это.

Регистрация и обработка пользовательских URI подробно описаны в официальной документации UWP , поэтому я призываю вас следовать этому.Короче говоря, вы сначала регистрируете пользовательскую схему URI в Package.appxmanifest, а затем переопределяете OnActivated в App.xaml.cs и проверяете, является ли IActivatedEventArgs.Kind ActivationKind.Protocol.Затем вы преобразуете IActivatedEventArgs в ProtocolActivatedEventArgs и используете его свойство Uri для доступа к запущенному URI.

На стороне Windows Forms вы просто должны запустить URI, и это вызовет UWPприложение для запуска / активации.Это можно сделать, запустив процесс с URI:

var url = "myapp:?someparam=somevalue";
var psi = new ProcessStartInfo();
psi.UseShellExecute = true;
psi.FileName = url; 
Process.Start(psi);

. Вы можете использовать URI для передачи любых значений string в приложение UWP благодаря использованию параметров строки запроса в URI.Вы можете прочитать их в методе OnActivated в приложении UWP.

Конечно, это не единственное решение, поскольку теперь вы также можете использовать API-интерфейсы UWP в Windows Forms, что позволяет, например, передавать данные междудва приложения, использующие службы приложений.Однако, если вам нужна только односторонняя связь, лучше использовать пользовательский URI.

Альтернативный метод - псевдоним выполнения приложения

Поскольку сборка 16226 UWP поддерживает псевдоним выполнения приложения, который позволяет объявлятьобщесистемное имя приложения, которое можно использовать для запуска приложения из командной строки из любой точки системы.Вы можете прочитать больше об этом в этом посте .Таким образом, вы можете запустить приложение напрямую по его имени и просто передать аргументы как аргументы процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...