sexta-feira, 3 de outubro de 2008

Java: Jawin já ganhou

Quando estava fazendo o controle remoto bluetooth (citado neste post), procurei uma biblioteca para comandar o Windows Media Player via Java. Isto só pode ser feito via COM (ActiveX), o que requer um componente nativo do Windows (uma DLL normalmente), para fazer a ponte entre o Java e o ActiveX do WMP.

Achei duas bibliotecas para isto: 
  • Jawin: Muito boa e facílima de usar. Mas parece que não está mais sendo desenvolvida. Como é open-source, não tem problema. Se tiver algum bug, dá para resolver.
  • Jacob: Continua em desenvolvimento, mas não é tão fácil de usar quanto a Jawin. Também é open-source.
Olha um exemplo de automação do PowerPoint, feito com a Jawin:

Ole32.CoInitialize();
DispatchPtr app = new DispatchPtr("PowerPoint.Application");
app.put("Visible", true);
DispatchPtr preses = (DispatchPtr)app.get("Presentations");
DispatchPtr pres = (DispatchPtr) preses.invoke("add", new Integer(-1));
DispatchPtr slides = (DispatchPtr)pres.get("Slides");
DispatchPtr slide = (DispatchPtr) slides.invoke("Add", new Integer(1), new Integer(2));
DispatchPtr shapes = (DispatchPtr)slide.get("Shapes");
DispatchPtr shape = (DispatchPtr) shapes.invoke("Item", new Integer(1));
DispatchPtr frame = (DispatchPtr)shape.get("TextFrame");
DispatchPtr range = (DispatchPtr)frame.get("TextRange");
range.put("Text", "Use Jawin to call COM objects");
Ole32.CoUninitialize();

Este fonte acima cria uma apresentação do PowerPoint, adiciona um slide e coloca o título: "Use Jawin to call COM objects". Funciona mesmo. Por mim, o Jawin já ganha do Jacob mesmo...  :-)

Nenhum comentário: