Встраивать внешнее приложение внутри приложения Java (или подделать его)
-
26-09-2020 - |
Вопрос
У меня есть приложение Java, которое будет работать в Windows 7 (используя Swing, App # 1), который работает как полный экран (но не в эксклюзивном режиме). У меня есть еще одно приложение (приложение № 2), которое отображает графический интерфейс для настройки внешнего устройства на последовательный порт, который у меня нет источника и не может измениться вообще.
Я хочу встроить приложение № 2 внутри приложения # 1, чтобы он выглядел так, чтобы он выглядел частью родительского приложения Java (скрывая файл -> кнопку выхода и сокрытие минимизации, максимизации и закрытых кнопок). < / P >.
Если такого рода интеграция невозможна внутри приложения Java, я был бы в порядке с открытием процесса с использованием Java и просто мониторинг его, чтобы держать его открытым. Для того, чтобы окно нужно было бы удержать окно «Всегда на вершине», потому что приложение № 1 является полноэкранным экраном и скрыть как можно больше внешнего интерфейса MS Windows, чтобы обмануть пользователю, чтобы он не думал, что это не внешнее приложение. Есть ли какой-то метод, будь то использование JNI или что-то еще для управления другими процессами окна (местоположение экрана, строка заголовка, минимизация, максимизация, закрытие кнопки) и состояние процесса изнутри моей приложения Java?
Я буду рад предоставить больше информации, если это необходимо.
Решение
Следующая схема - это независимая языка, мне удалось встроить окно IE в приложение Ruby:
- .
-
Прежде всего, измените стиль окна внешнего приложения (вы можете использовать JNA для вызова WinAPI):
Стиль= getwindowlongptr (app_hwnd, gwl_style);
стиль |= ws_child;
Стиль &= ~ ws_caption;
Стиль &= ~ ws_popup;
setwindowlongptr (hwnd, gwl_style, стиль);
-
Определите отношения родительские дочерние отношения между Windows:
setParent (app_hwnd, java_hwnd);
-
Слушайте, чтобы переместить / изменить размер событий вашего окна Java и нанесите новые позиции на дочернем окне.