Domanda

Ho un'applicazione Java che verrà eseguita su Windows 7 (utilizzando Swing, App n. 1) che funziona a schermo intero (ma non in modalità esclusiva).Ho un'altra applicazione (App n. 2) che visualizza una GUI per configurare un dispositivo esterno su una porta seriale di cui non ho l'origine e che non posso modificare affatto.

Voglio incorporare l'app n. 2 all'interno dell'app n. 1 in modo che sembri parte dell'applicazione Java principale (nascondendo il file --> pulsante di uscita e nascondendo i pulsanti di riduzione a icona, ingrandimento e chiusura).

Se questo tipo di integrazione non è possibile all'interno dell'applicazione Java, mi andrebbe bene aprire il processo utilizzando Java e monitorarlo semplicemente per mantenerlo aperto.Sarebbe necessario mantenere la finestra impostata su "sempre in primo piano" perché l'App n. 1 è a schermo intero e nascondere la maggior parte possibile dell'interfaccia utente esterna di MS Windows per indurre l'utente a pensare che non sia un'applicazione esterna.Esiste un qualche tipo di metodo se si utilizza JNI o ​​qualcos'altro per gestire un'altra finestra di processi (posizione dello schermo, barra del titolo, minimizzare, ingrandire, chiudere la visibilità del pulsante) e lo stato del processo dall'interno della mia applicazione Java?

Sarò felice di fornire maggiori informazioni se necessario.

È stato utile?

Soluzione

Il seguente schema è indipendente dalla lingua, sono riuscito a incorporare la finestra IE in un'applicazione Ruby in questo modo:

  • Prima di tutto, cambia lo stile della finestra dell'applicazione esterna (puoi usare JNA per chiamare WinAPI):

    stile = GetWindowLongPtr(APP_HWND, GWL_STYLE);

    stile |= WS_CHILD;

    stile &= ~WS_CAPTION;

    stile &= ~WS_POPUP;

    SetWindowLongPtr(HWND, GWL_STYLE, stile);

  • Definire la relazione genitore-figlio tra le finestre:

    ImpostaParent(APP_HWND, JAVA_HWND);

  • Ascolta gli eventi di spostamento/ridimensionamento della tua finestra Java e applica nuove posizioni su una finestra secondaria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top