Код возврата для LaunchFullTrustProcessForCurrentAppAsync

2

Я запускаю приложение win32 из приложения UWP, используя следующий код:

var operation = FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync(groupId);
operation.Completed = new AsyncActionCompletedHandler(asyncHandler);
....
private static void asyncHandler(IAsyncAction asyncInfo, AsyncStatus status)
{
    if (status == AsyncStatus.Completed)
    {
          System.Diagnostics.Debug.WriteLine(asyncInfo.ToString());
          System.Diagnostics.Debug.WriteLine(asyncInfo.ErrorCode);
    }
}

Обработчик Async вызывается с статусом Completed, но там отсутствует ErrorCode.

Как я могу получить код возврата результата надежного процесса win32?

Спасибо!

  • 1
    Он просто запускает приложение, не ждет его завершения. Так что нет, вы ничего не можете узнать об этом.
  • 0
    Понял. Можно ли как-то дождаться завершения процесса или установить на него обратный вызов?
Теги:
uwp

2 ответа

3
Лучший ответ

Как я могу получить код возврата результата надежного процесса win32?

Предложение @HansPassant было правильным. Если вы хотите получить некоторые данные из процесса win32 при использовании API LaunchFullTrustProcessForCurrentAppAsync. Вы можете использовать AppService для передачи данных между процессом UWP и win32.

Для получения дополнительной информации вы можете обратиться к образцу кода.

В этом примере приложение UWP использует LaunchFullTrustProcessForCurrentAppAsync для запуска приложения win32. Приложение win32 используется для получения данных из базы данных sqlserver. В UWP он использует AppService и ValueSet для передачи "соединения" в приложение win32. В приложении win32 он использует AppService и ValueSet для возврата данных в UWP.

0

Это не профессиональный способ сделать это, но я использую клип-плату для передачи данных между UWP-приложением и WPF-приложением (надежным исполняемым файлом). Мы можем установить данные на плату клипа, используя ниже,

В WPF

Clipboard.SetText("Hello, clipboard"); 

В UWP

var dataPackage = new Windows.ApplicationModel.DataTransfer.DataPackage();
dataPackage.SetText(file.Path);
Windows.ApplicationModel.DataTransfer.Clipboard.SetContent(dataPackage);

Примечание. Я использую это решение в хорошо известной среде, где не будет никаких проблем из-за многопоточности или асинхронных изменений в клипе. Поэтому обеспечьте себя перед использованием этого решения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню