3

フルスクリーンとして実行される(ただし、排他モードではない)Windows 7(Swing、アプリ#1を使用)で実行されるJavaアプリケーションがあります。別のアプリケーション(アプリ#2)があり、ソースがなく、まったく変更できないシリアルポートを介して外部デバイスを構成するためのGUIを表示します。

App#2をApp#1の中に埋め込んで、親Javaアプリケーションの一部のように見せたい(ファイル->終了ボタンを非表示にし、最小化、最大化、および閉じるボタンを非表示にする)。

この種の統合がJavaアプリケーション内で不可能な場合は、Javaを使用してプロセスを開き、それを監視して開いたままにしておくだけで問題ありません。アプリ#1は全画面表示であり、外部MS Windows UIをできるだけ非表示にして、ユーザーをだまして外部アプリケーションではないと思わせるため、ウィンドウを「常に上」に設定しておく必要があります。JNIまたは他の何かを使用して別のプロセスウィンドウ(画面の場所、タイトルバー、最小化、最大化、ボタンの表示を閉じる)を管理し、Javaアプリケーション内から状態を処理する方法はありますか?

必要に応じて、さらに詳しい情報を提供させていただきます。

4

1 に答える 1

6

次のスキームは言語に依存しません。この方法でIEウィンドウをRubyアプリケーションに埋め込むことができました。

  • まず、外部アプリケーションウィンドウのスタイルを変更します(WinAPIの呼び出しにJNAを使用できます)。

    style = GetWindowLongPtr(APP_HWND、GWL_STYLE);

    スタイル|=WS_CHILD;

    スタイル&=〜WS_CAPTION;

    スタイル&=〜WS_POPUP;

    SetWindowLongPtr(HWND、GWL_STYLE、style);

  • ウィンドウ間の親子関係を定義します。

    SetParent(APP_HWND、JAVA_HWND);

  • Javaウィンドウの移動/サイズ変更イベントをリッスンし、子ウィンドウに新しい位置を適用します。

于 2010-07-22T10:11:26.837 に答える