Pergunta

Eu tenho um aplicativo Java que será executado no Windows 7 (usando Swing, App # 1) que é executado como tela cheia (mas não no modo exclusivo). Eu tenho outro aplicativo (aplicativo # 2) que exibe uma GUI para configurar um dispositivo externo em uma porta serial que eu não tenho a fonte e não posso alterar.

Eu quero incorporar o aplicativo # 2 dentro do aplicativo # 1 para que pareça que é parte do aplicativo pai Java (escondendo o botão Arquivo -> Sair e escondendo os botões Minimizar, Maximizar e Fechar). < / p >.

Se esse tipo de integração não for possível dentro do aplicativo Java, eu ficaria bem em abrir o processo usando Java e apenas monitorá-lo para mantê-lo aberto. Ele precisaria manter a janela definida para "sempre no topo" porque o App # 1 é em tela cheia e esconda o máximo possível da UI do MS externo possível para enganar o usuário em pensar que não é um aplicativo externo. Existe algum tipo de método se usa o JNI ou outra coisa para gerenciar outra janela de processos (localização da tela, barra de título, minimizar, maximizar, fechar a visibilidade do botão) e o estado de processo de dentro do meu aplicativo Java?

Terei todo o prazer em fornecer mais informações, se necessário.

Foi útil?

Solução

O seguinte esquema é independente da linguagem, eu consegui incorporar a janela IE em um aplicativo Ruby desta forma:

  • Primeiro de tudo, altere o estilo da janela do aplicativo externo (você pode usar o JNA para chamar winapi):

    style= getwindowlongptr (app_hwnd, gwl_style);

    estilo |= ws_child;

    style &= ~ ws_caption;

    style &= ~ ws_popup;

    setwindowlongptr (hwnd, gwl_style, estilo);

  • Defina a relação pai-filho entre o Windows:

    setparent (app_hwnd, java_hwnd);

  • Ouça eventos de mover / redimensionar a janela Java e aplicar novas posições em uma janela de criança.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top