Frage

Ich habe eine Java-Anwendung, die unter Windows 7 (mithilfe von Swing, App # 1) ausgeführt wird, die als Vollbildmodus ausgeführt wird (jedoch nicht im exklusiven Modus). Ich habe eine andere Anwendung (app # 2), die eine GUI anzeigt, um ein externes Gerät über einen seriellen Anschluss zu konfigurieren, den ich nicht über die Quelle habe und sich überhaupt nicht ändern kann.

Ich möchte die App # 2 in der App # 1 einbetten, so dass es so aussieht, dass es ein Teil der übergeordneten Java-Anwendung ist (die Taste Datei einstecken und die Schaltfläche Minimieren, Maximieren und Schließen verstecken). < / p>

Wenn diese Art der Integration in der Java-Anwendung nicht möglich ist, wäre mir das Unternehmen mit der Eröffnung des Prozesses mit Java in Ordnung und überwachen sie einfach, um sie offen zu halten. Es müsste das Fenster auf "Immer oben" aufbewahren, da App # 1 Vollbild ist und so viel von der externen MS Windows-Benutzeroberfläche wie möglich ausblenden, um den Benutzer dazu zu bringen, dass der Benutzer zu denken, dass es keine externe Anwendung ist. Gibt es eine Art Methode, egal ob JNI oder etwas anderes, um ein anderes Prozessfenster zu verwalten (Bildschirmstandort, Titelleiste, Minimierung, Maximierung, Schließen der Taste Sichtbarkeit) und den Prozessstatus aus meiner Java-Anwendung?

Ich werde froh sein, falls nötig weitere Informationen bereitzustellen.

War es hilfreich?

Lösung

Das folgende Programm ist sprachunabhängig, ich habe es geschafft, das dh-Fenster in eine Ruby-Anwendung auf diese Weise einzubetten:

  • Zunächst einmal ändern Sie den Stil des externen Anwendungsfensters (Sie können JNA für den Anruf von Winapi verwenden):

    style= getwindowlongptr (app_hwnd, gwl_style);

    style |= ws_child;

    style &= ~ ws_cagtion;

    style &= ~ ws_popup;

    setwindowlongptr (hwnd, gwl_style, style);

  • Definieren Sie die Eltern-Kind-Beziehung zwischen Windows:

    setparent (app_hwnd, java_hwnd);

  • Hören Sie den Anhören / Ändern der Ereignisse Ihres Java-Fensters, und wenden Sie auf einem Kinderfenster neue Positionen an.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top