2017-02-07 7 views
1

現在、UWPでいくつかのドキュメントを修正するために外部アプリケーションを起動する必要があるプロジェクトに取り組んでいます。起動したアプリケーションが停止するのを待つ

私たちはWindows.System.Launcher APIを調べましたが、私たちに提供できるもの以上のものが必要と思われます。

我々は、ファイルからアプリケーションを立ち上げましたように、我々はexample given by the MSDNに基づいてLaunchFileAsync方法、使用します。これまでのところ

async void DefaultLaunch() 
{ 
    // Path to the file in the app package to launch 
    string imageFile = @"images\test.png"; 

    var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile); 

    if (file != null) 
    { 
     // Launch the retrieved file 
     var success = await Windows.System.Launcher.LaunchFileAsync(file); 

     if (success) 
     { 
     // File launched 
     } 
     else 
     { 
     // File launch failed 
     } 
    } 
    else 
    { 
     // Could not find file 
    } 
} 

を、例が良く、私たちに合うが、我々はまた、時に警告する必要がありますユーザーはファイルを使用して完了します。最善の方法は、ランチャーにコールバックメソッドを与えることです。

ドキュメントにはまだそのようなものは見つかりませんでした。これも可能ですか?別のソリューションを使用する必要がありますか?

TL; DR:UWPアプリケーションから別のアプリケーションを開き、結果オブジェクトを返すのを待つソリューションはありますか?

答えて

2

外部アプリもUWPアプリの場合は、Launcher.LaunchUriForResultsAsyncがこれ用に設計されています。ターゲットアプリを起動し、結果が返ってくるまで待つ。

詳細については、Launch an app for resultsを参照してください。

ターゲットアプリがUWPアプリでない場合、同じことを自分で実装することができます。両方のアプリはプロトコルを宣言します。クライアントはサーバーのプロトコルを使用してサーバーを起動します。サーバーが終了すると、クライアントのプロトコルを起動して呼び出し元に通知します。

App Servicesを参照すると、UWPサーバーアプリケーションがRESTライクなサービスをローカルシステムのクライアントに公開することができます。

1

アプリプロセス分離モデルは、UWPアプリからはできないことを意味します。任意のプログラムがいつ終了したかを知りたいのであれば、従来の.net/win32でこれを書き、そのUWPアプリにdesktop bridgeを使って書き込むことができます。

関連する問題