2

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を見つけて、それと醜いハックを実行することができますが、これを避けたいと思います。

よろしく、 ドミニク

答えて

0

バックグラウンドタスクがUWP https://docs.microsoft.com/en-us/windows/uwp/launch-resume/support-your-app-with-background-tasks

であり、また、あなたがpackage.appxmanifestファイルでこの設定 'AppListEntry' に興味があるでしょう。それをあなたのアプリケーションへのリンクは

+0

ありがとう... [スタート]メニュー

<Applications> <Application Id="id" Executable="$targetnametoken$.exe" EntryPoint="entrypoint.App"> <uap:VisualElements AppListEntry="none" .../> 

には表示されません! 'AppListEntry =" none "'を設定すると、私が望むものが正確に実行されるため、ユーザーはアプリケーションを直接起動できなくなります。 – dominik

+0

しかし、インストールされたappx-packageをインストールしてから、パッケージインストールダイアログの "Launch"ボタンを押すと、アプリケーションを起動する可能性があります。 – dominik

+0

Windowsストアからこの方法でアプリを起動すると、このアプリは拡張機能で、エッジが起動します。マニフェストにエントリポイントを空のままにして、動作させる必要があります。 – 2Jura5

関連する問題