Always On Top に設定された単一の JFrame で構成される Swing アプリケーションがあります。
Windows で実行する場合、次のコードを使用して、ネイティブの既定の電子メール クライアントとブラウザーをそれぞれ開きます。
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + Utils.formatMailtoUrl(to, subject, body));
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
JFrame は Always On Top に設定されていますが、一般的なデフォルトのブラウザーまたは電子メール クライアント (お客様の場合は IE および Outlook) は Always On Top として開かないため、前者は後者を妨げます。
現在の「解決策」は、ネイティブ ウィンドウを開くと同時に JFrame を最小化することです。しかし、これは 508 準拠の問題であることが判明し、次のことを求められています。
- JFrame を最小化しません。
- ブラウザまたは電子メール クライアントを閉じた後、フォーカスを JFrame に戻す
私が念頭に置いている戦略は、JFrame の Always On Top 状態を「オフ」にし、何らかのコールバックまたはイベント リスナーを用意して、電子メールまたはブラウザ ウィンドウが閉じられたことを JFrame に通知し、JFrame を元の状態に戻すことです。 Always On Top 状態にしてフォーカスを設定します。
これは Java アプリであるため、ネイティブの相互運用性について話しているため、これは不可能に近いのではないかと心配しています。私の戦略は実行可能ですか、実行可能なより良い戦略はありますか、そして最も重要なのは、それをどのように実行できるか?!
前もって感謝します!