Pessoal, estou com um problema aqui que está me fervendo a cabeça…
Eu nunca utilizei a biblioteca jawin… E estou tentando acessar uma dll VB que serve para acessar um relógio de ponto eletrônico. Essa dll foi diponibilizada pela empresa que produziu o relógio.
Só que quando eu executo o método, ocorre o seguinte erro:
O erro ocorre neste trecho::
// Nome da dll ponto nome da classe
app = new DispatchPtr("Teste.clsTeste" );
Segue abaixo o método de teste.
Obs: neste mesmo método eu coloquei uma chamada ao Power Point utilizando jawin e funcionou perfeitamente.
publicvoidprocess(){longstart=System.currentTimeMillis();DispatchPtrapp;DispatchPtrapp2;try{app2=newDispatchPtr("PowerPoint.Application");app2.put("Visible",true);}catch(COMExceptione1){// TODO Auto-generated catch blocke1.printStackTrace();}try{// Nome da dll ponto nome da classe app=newDispatchPtr("Teste.clsTeste");Stringteste=(String)app.invoke("Teste","bruna");System.out.println(teste);}catch(Exceptione){System.out.println(e.getMessage());e.printStackTrace();}longend=System.currentTimeMillis();System.out.println("->Tempo de processamento: "+(end-start));}
Essa DLL VB foi registrada corretamente? Se você tentar chamar essa DLL VB a partir de um programa VBScript, ela funciona?
bruninhatp
A sim!! Está registrada!!! Isso é fato!
Obrigada!
bruninhatp
E testei agora aqui com uma aplicação VB e funcionou corretamente.
Mas alguém já passou por isso e poderia me ajudar?
Obrigada!
E
entanglement
Já ouvi falar que na verdade não dá para usar o nome Teste.clsTeste mas algum outro que é parecido, mas como não estou aqui com um VB6 para testar, não tenho como comprovar isso.
bruninhatp
Você diz por causa do nome da classe???
bruninhatp
Ninguém aqui teve problemas utilizando Jawin?!?!?!?!!??!?!
[color=red] com.develop.jawin.COMException: 800401f3: Seqüência de classe inválida[/color]
E
entanglement
O erro 0x800401f3 quer dizer que o sistema não conseguiu achar uma classe registrada exatamente com esse nome.
bruninhatp
Eu pedi para um programador VB aqui da equipe fazer uma dll só para eu testar, simples, quando eu chamo o método, deveria me retornar a String que passei por parâmetro só que uppercase.
Eu a registrei aqui na minha máquina e ele fez um programinha que chama essa dll, passa um nome e dá uma mensagem com o retorno do método da dll. E o programa dele funcionou normal aqui na minha máquina, ou seja, a dll está registrada.
É isso que ta me deixando de cabelos em pé!
Não é possíveeeellll!!! rs…
Eu preciso fazer isso funcionar!!
Valeu pela atenção!
E
entanglement
Deve haver na máquina em que está instalado o Visual Studio 6 um programa chamado “oleview” (OLE/COM Object Viewer).
Como eu disse antes, não tenho aqui um Visual Studio 6 para fazer um teste do tipo “Se sua classe se chama Teste.clsTeste, é necessário alterar o nome para _Teste.clsTeste ou Teste.Teste ou Teste._clsTeste para fazer o seu programa funcionar.”
Mas como o oleview permite verificar que DLLs estão registradas na sua máquina, em que lugar e com que nome, então veja se você consegue encontrar o nome alternativo para essa classe.
OK?
bruninhatp
É pessoal… Não deu certo usar o Jawin…
Tentei JNA. Carrega a dll, porém retorna a mensagem que não encontra o método.
Daí me falaram que para acessar dll VB tenho que usar Jacob. Estou tentando pq documentaçao é escassa, e os exemplos que encontrei são todos para abrir ferramentas do office ou Outlook…
Valeu pela atenção!
Bjo :roll: :roll: :roll:
J
javablue
Bruna, tudo bem?
Faz tempo que eu mexi com Jawin, mas eu lembro que tem um programa dele, que você aponta para a DLL e ele gera as classes pra você! Muito simples.
Eu tenho isso guardado no meu e-mail, mas aqui não tenho acesso.
Quando chegar eu posto aqui.
bruninhatp
javablue:
Bruna, tudo bem?
Faz tempo que eu mexi com Jawin, mas eu lembro que tem um programa dele, que você aponta para a DLL e ele gera as classes pra você! Muito simples.
Eu tenho isso guardado no meu e-mail, mas aqui não tenho acesso.