2

カスタム ソフトウェアの 2 つのバージョンがあります。Modern/Metro アプリ (AppM) と従来のデスクトップ アプリケーション (AppD)。よく理解されているマニフェストを使用して、AppM のカスタム プロトコルを作成しました。レジストリを編集して AppD 用のカスタム プロトコル ハンドラーを作成し、[実行] ダイアログ (WIN + R) からプロトコルをアクティブにして AppD を実際に起動できることをテストしました。この場合。AppD から AppM を起動し、AppM から AppD を起動できるようにしたいと考えています。それぞれにハンドラーを追加しました。AppD では Process.Start(uri) を使用し、AppM では Launcher.LaunchUriAsync(uri) を使用しています。AppD から AppM を起動することはできますが、AppM から AppD を起動することはできません。私はグーグルで検索しましたが、これへの参照が見つかりません。想定している」これは不可能であり、パーミッションに大きく関係している可能性があります。この任務はプロジェクトで私に委ねられたので、それが不可能であることを証明するか、解決策を見つける必要があります。

C#/XAml と HTML/JS を使用してこれをテストしましたが、Launcher.LaunchUriAsync(uri).when() 成功関数が呼び出されていることがわかりましたが、成功フラグは false です。エラーはありません (または、少なくとも err 関数はヒットしません)。より良いエラー メッセージを取得したいのですが、現在その方法を掘り下げようとしています。

したがって、実際の問題を解決するか、これをデバッグする方法を支援していただければ幸いです。

更新: 自分のコードを削除するために、関連付けによる起動の例をダウンロードしてインストールし、単純にvar uriToLaunch= " http://bing.com "var uriToLaunch= "AppD:"に変更しましたが、毎回失敗します。このプロトコルはレジストリに関連付けられており、これを確認するために使用している方法は、デスクトップから WIN + R を使用して実行することであり、アプリは問題なく起動します。

4

1 に答える 1

0

BatRTは、メトロ アプリから URI 呼び出しを利用してバッチ ファイルを実行できるようにするアプリケーションです。これで問題が解決するはずです。メトロ アプリ内でバッチ ファイルを作成し、BatRT を使用してバッチ ファイルを実行するだけです。コード スニペットは、上記のリンクから入手できます。

于 2013-05-18T20:30:38.057 に答える