Встраивать внешнее приложение внутри приложения Java (или подделать его)

StackOverflow https://stackoverflow.com/questions/3307320

Вопрос

У меня есть приложение 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 и нанесите новые позиции на дочернем окне.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top