Самый простой способ сделать это - использовать пользовательскую схему 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 поддерживает псевдоним выполнения приложения, который позволяет объявлятьобщесистемное имя приложения, которое можно использовать для запуска приложения из командной строки из любой точки системы.Вы можете прочитать больше об этом в этом посте .Таким образом, вы можете запустить приложение напрямую по его имени и просто передать аргументы как аргументы процесса.