Я запускаю приложение 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?
Спасибо!
Как я могу получить код возврата результата надежного процесса win32?
Предложение @HansPassant было правильным. Если вы хотите получить некоторые данные из процесса win32 при использовании API LaunchFullTrustProcessForCurrentAppAsync. Вы можете использовать AppService для передачи данных между процессом UWP и win32.
Для получения дополнительной информации вы можете обратиться к образцу кода.
В этом примере приложение UWP использует LaunchFullTrustProcessForCurrentAppAsync для запуска приложения win32. Приложение win32 используется для получения данных из базы данных sqlserver. В UWP он использует AppService и ValueSet для передачи "соединения" в приложение win32. В приложении win32 он использует AppService и ValueSet для возврата данных в UWP.
Это не профессиональный способ сделать это, но я использую клип-плату для передачи данных между 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);
Примечание. Я использую это решение в хорошо известной среде, где не будет никаких проблем из-за многопоточности или асинхронных изменений в клипе. Поэтому обеспечьте себя перед использованием этого решения.