Integração Java/COM (Microsoft)

6 respostas
R

Olá pessoal,

tenho um software que dispõe de uma API para ser possível automatizar tarefas que envolvam sua utilização. Estou precisando fazer um programa em Java faça isso.

O Software exporta as suas funções e algoritmos através do mecanismo COM. Para utilizá-la precisarei instanciar este objeto COM no meu programa.

Estive procurando maneiras de integrar JAVA ao COM , e encontrei poucas; acho que a única gratuita é o JACOB (http://danadler.com/jacob/), mas não parece muito estável e utilizado (corrijam-me se estiver errado…). Enfim, não estou nem conseguindo compilar utilizando o Jacob.

Alguém tem alguma idéia de como fazer isso ? Agradeço sugestões !

Obrigado a todos !
Rafael March.

6 Respostas

T

Sinto muito, mas você tem de usar mesmo o Jacob. Só que o site oficial é este aqui agora:

http://jacob-project.wiki.sourceforge.net/

Você pode escrever um programa em VBScript (ou outra coisa que chame COM) antes para testar as funcionalidades de sua biblioteca? Depois você “traduz” o código para as APIs do Jacob.

T

Quanto à utilização, ele é usado pelo Groovy para implementar a integração do Groovy ao COM.

R

Obrigado,

bom saber que o JACOB é realmente a solução mais utilizada. Quanto a escrever o programa em VB, não será possível, pois não sei programar em VB! :stuck_out_tongue:

Mas já consegui compilar um programa utilizando o JACOB, então acho que é só uma questão de tempo para eu descobrir como carregar o objeto COM. Se alguém souber como, gostaria de saber: tenho um objeto COM “Maps.Document” e gostaria de carregá-lo a partir de uma aplicação JAVA através do JACOB. Alguém pode me dar o caminho das pedras ?

[]'s a todos!
Rafael March.

T

Hum… você pode usar a tal ferramenta (JacobGen)? É que só pelo nome (Maps.Document) não tenho a mínima idéia de que biblioteca COM, e de que versão dela, ou do fabricante, você está falando.

Essa ferramenta deve ler o registry (ou a própria DLL) e ver a “type library” associada à biblioteca; então, ela deve dizer pelo menos que métodos podem ser chamados.

Se você tiver um programa em VB que chame essa biblioteca, como exemplo, fica muito mais fácil de trabalhar.

Eu digo o seguinte: não custa nada aprender VB 6.0 para poder mexer com essa coisa - é o que eu faria no seu lugar, já que você precisa pelo menos criar uma pequena tela (com um botão OK) para poder testar as funções da biblioteca.

Aviso: se a tal DLL tem de desenhar algo em algum frame do seu programa, não sei se só o Jacob é suficiente. Que eu saiba, ele é mais indicado quando a aplicação não é visual.

R

Bom,

Maps.Document é um objeto COM (pelo menos é o que eu entendi do fabricante do software) que encapsula todas as funções do Software MAPS (que é um software para controle de risco de mercado financeiro - não esperava que alguém conhecesse! :))

Para te ajudar a me ajudar, vou colar aqui um pequeno trecho do HELP do software:

Tecnicamente, a API do MAPS é implementada através do mecanismo COM
da Microsoft. O MAPS exporta um objeto ?MAPS.Document?, o qual contem
as diversas funções da API. O usuário deve criar este objeto COM em seu
programa, e depois pode acessar a API livremente. A API do MAPS pode ser
acessada, em princípio, por programas escritos em qualquer linguagem de
programação, mas foi projetada para facilitar particularmente o acesso de
programas escritos em C, C++, Basic (Visual Basic) e VBA (Excel, Access e
Office em geral).

Este outro trecho é um exemplo de código em VB que faz o que eu quero fazer em Java:

[i]1. Criar um objeto MAPS.Document em seu programa:
Public App As Object
Set App = CreateObject(“MAPS.Document”)

  1. Efetuar o login de um usuário (remoto):
    Dim result as Boolean
    result = App.Login(“p”, “q”)

  2. Exemplo de execução de uma função da API
    totalMtM = App.GetBookTotal(bookname, 1, 2)[/i]

Espero que tenha sido mais claro agora…tem idéia de como eu realizo estes passos acima em Java ?

[]'s a todos,
Rafael March.

T

Pelo que estou imaginando, é questão de você pegar o pacote do Jacob e ver os exemplos contidos. Não cheguei a usar pessoalmente essa biblioteca.

Criado 2 de junho de 2008
Ultima resposta 2 de jun. de 2008
Respostas 6
Participantes 2