Como chamar aplicativos nativos via Adobe AIR 2

Olá,

O Adobe AIR é uma excelente oportunidade para quem quer desenvolver um software multi-plataforma, sendo 100% uma aplicação html/js ou flash/flex.

Na verdade, o Adobe AIR nada mais é do que um navegador webkit contando com o auxílio de bibliotecas javascript nativas a mais, que são as bibliotecas que ficam no pacote air.*.

Hoje vou apresentar como usar o NativeProcess do Adobe AIR 2 para chamar por exemplo o “notepad/gedit” pela sua aplicação AIR.

Eu estou desenvolvendo usando o Aptana, que é uma IDE free e muito boa para aplicações com Adobe AIR e Ajax, possuindo até mesmo debug.

Vamos lá.

1 – Baixe e instale o Aptana(http://www.aptana.com/)

2 – Baixe e instale o Adobe AIR 2 SDK (http://get.adobe.com/br/air/)

3 – Abra o Aptana e instale o plugin para Adobe AIR

4 – Adicione o SDK na lista de SDK do Adobe AIR dentro do Aptana, no menu Window->Preferences

5 – Crie um novo projeto do tipo “Adobe AIR”, no menu “File->New->Project”, item “web->Adobe AIR Project”

6 – Agora vou colocar um código de exemplo:

var process;

function abrirPrograma()

{
var file = null;

if (air.Capabilities.os.toLowerCase().indexOf(“win”) > -1)
{
file = file.resolvePath(“c:\\windows\\system32\\notepad.exe”);
}
else
{
file = file.resolvePath(“gedit”);
}

var arguments = new air.Vector["<String>"]();
arguments.push(‘teste.txt’);

var nativeProcessStartupInfo = new air.NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments = arguments;
process = new air.NativeProcess();
process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
process.addEventListener(air.ProgressEvent.STANDARD_INPUT_PROGRESS, inputProgressListener);

process.start(nativeProcessStartupInfo);

if(process && process.running){
alert(‘rodando’);
}
}

function inputProgressListener(event)
{
process.closeInput();
}

function onOutputData(event)
{
var bytes = process.standardOutput;
alert(bytes.readUTFBytes(bytes.bytesAvailable));
}

Bom, o código esta ai, é bem simples de entender.

Adicionei até mesmo a chamada com parâmetros, pois quase ninguém conhece que o Adobe AIR disponibiliza uma imitação de vetor para javascript, para que seja feita a conversão entre tipos, caso precise integrar JS + Flex/Flash.

Eu estou fazendo um projeto onde estou colocando dentro da minha aplicação AIR o JRuby e chamando desta mesma forma ai, basta copia a pasta do jruby para dentro da aplicação e chamar assim:

if (air.Capabilities.os.toLowerCase().indexOf(“win”) > -1)
{
file = file.resolvePath(“jruby/bin/jruby.exe”);
}
else
{
file = file.resolvePath(“jruby/bin/jruby”);
}

Funciona no Linux, Windows e Mac.

Ah, não esqueça de adicionar no arquivo “application.xml” da sua aplicação AIR o seguinte:

<supportedProfiles>extendedDesktop</supportedProfiles>

Antes de:

</application>

Isso permite sua aplicação executar o NativeProcess, senão o Adobe AIR vai gerar uma exceção dizendo que o sistema não permite usar esta API.

Deixe um comentário

Obs: A moderação de comentários está ativa e seu comentário pode demorar a aparecer. Não é necessário enviar seu comentário novamente.