Javaアプリケーション内に外部アプリケーションを埋め込む(または偽装)
-
26-09-2020 - |
質問
フルスクリーンとして実行されるWindows 7(Swing、App#1)で実行されるJavaアプリケーションがあります(Swing、App#1)。私は、ソースを持っていないシリアルポートを介して外部デバイスを設定するためのGUIを表示する別のアプリケーション(アプリ#2)があります。
親Javaアプリケーションの一部であるように見えるように、アプリ#1の内側を埋め込みたい(ファイル - >終了ボタンを隠し、最小化、最大化、および閉じる)。< / P>
Javaアプリケーション内でこの種の統合が不可能な場合は、Javaを使用してプロセスを開いてそれを監視して開くだけで監視するだけです。アプリ#1はフルスクリーンで、外部アプリケーションではないことを考えることにユーザーをトリックするために、できるだけ多くの外部MS Windows UIの大部分を隠すことができるため、ウィンドウを「常に上に」設定する必要があります。 JNIや他のプロセスウィンドウ(画面の場所、タイトルバー、最小化、最小化、閉じる、閉じる、ボタンの可視性、最小化、閉じる)とプロセス状態を使用して、Javaアプリケーションの内側からのプロセス状態を使用して、ある種の方法はありますか?
必要に応じてより多くの情報を提供して幸せになります。
解決
次のスキームは言語独立しています。このようにして、ルビーアプリケーションにIEウィンドウを埋め込むことができました:
-
まず、外部アプリケーションウィンドウのスタイルを変更します(WinAPIを呼び出すためにJNAを使用できます):
style= getWindowlongptr(app_hwnd、gwl_style);
style |= ws_child;
スタイル&= ~WS_CAPTION;
スタイル&= ~WS_POPUP;
SetWindowLongPtr(hwnd、gwl_style、style);
-
ウィンドウ間の親子関係を定義する:
setParent(app_hwnd、java_hwnd);
-
あなたのJavaウィンドウのイベントの移動/サイズ変更をリッスンし、子ウィンドウに新しい位置を適用します。