Windows上にWebブラウザと通信する必要のある古典的なデスクトップアプリケーションがあります。 したがって、Webブラウザの拡張機能を作成し、ネイティブメッセージングテクノロジを使用して、WebページのJavaScriptとネイティブデスクトップアプリケーション間でメッセージを渡しました。 この通信方法は、現在Google Chrome、Mozilla Firefox、Operaでサポートされています。 Microsoft Edgeで同じタスクを実行します。 残念ながら、Microsoft Edgeでは他のブラウザとは異なる方法でネイティブメッセージングをサポートしています。 Chrome/Firefox/Operaでは、単純にシリアル化されたJSON文字列をstdin/stdout経由でネイティブメッセージングホストアプリケーションに渡すことができます。デスクトップPCでネイティブメッセージングを使用するMSエッジエクステンション - UIなしでUWPアプリケーションを実行する
Microsoft EdgeはユニバーサルWindowsプラットフォームアプリケーションであるため、AppServiceを介して別のUWPアプリケーションと通信するだけで、さらにFullTrustProcess経由で従来のデスクトップアプリケーションと通信することができます。 従来のデスクトップアプリは、さまざまな理由でUWPアプリに変換できません。 基本的にこれは問題ありませんが、現在解決方法がわからない問題がいくつかあります。
UWPアプリケーションにはユーザーインターフェイスが必要なようです。しかし、拡張機能の目的はコミュニケーションだけであり、意図されたUIはありません。
ユーザーがUWPアプリケーションを開くとUWP App/Edge Extensionに関する情報が表示される可能性がありますが、ユーザーが(Xボタンをクリックするなどして)アプリケーションを閉じると、UWPアプリケーションプロセスはシステム。これが通信プロセス中に発生すると、ネイティブメッセージング通信が中断され、ユーザーはエラーを受け取ります。 これまで私はこれを避ける方法を見つけていませんでした。 Microsoft Edgeが(拡張機能のバックグラウンドJavaScriptコードで "runtime.connectNative"によって開始された)UWP Appを起動すると、バックグラウンドモードで実行され、Microsoft Edgeが終了すると終了します。 しかし、ユーザーが(スタートメニューなどで)アプリケーションを開くと、アプリケーションのプロセスが再利用され、現在はフォアグラウンドモードで実行されています。 App UIがユーザーによって閉じられた場合、Microsoft Edgeによって最初に開始されたプロセスは終了します。 私はMicrosoftの公式の "ExtendedExecution"の例を見てきましたが、これは同じように動作します。
- ユーザーがアプリケーションのUIを閉じた場合、バックグラウンドモード実行の代わりの終了にUWPのAppを送信する方法はありますか?以前と同じように、アプリはバックグラウンドモードで動作し続けますか?
- OnLaunchedイベントでUIを非表示にする方法はありますか(たとえば、従来のデスクトップアプリが開かれ、ユーザーはUWPアプリケーションを手動で閉じることができなくなります)。
おそらく私のネイティブデスクトップアプリケーションからUWPアプリのHWNDを見つけて、それと醜いハックを実行することができますが、これを避けたいと思います。
よろしく、 ドミニク
ありがとう... [スタート]メニュー
には表示されません! 'AppListEntry =" none "'を設定すると、私が望むものが正確に実行されるため、ユーザーはアプリケーションを直接起動できなくなります。 – dominik
しかし、インストールされたappx-packageをインストールしてから、パッケージインストールダイアログの "Launch"ボタンを押すと、アプリケーションを起動する可能性があります。 – dominik
Windowsストアからこの方法でアプリを起動すると、このアプリは拡張機能で、エッジが起動します。マニフェストにエントリポイントを空のままにして、動作させる必要があります。 – 2Jura5