|
||||||
Argow pode ativar e comunicar com diferentes processos, estendendo suas funções, tarefas e janelas, ao disponibilizar API, DLL e componentes para criação de plug-ins. O conjunto de ferramentas, códigos e documentos que permitem criar plug-ins é chamado de InterProc e sua utilização requer uma licença especifica. Sem a licença, todas as edições de Argow expõem os procedimentos em modo demonstração, com algumas limitações. Pela funcionalidade, a comunicação é divida em dois modos: Desligado e Integrado. |
||||||
DesligadoOs processos desligados podem ser bibliotecas Win32 (DLL) ou programas (EXE) que são abertos desde um script de Argow, de forma modal ou não, e sua execução não interfere com o funcionamento do Argow (além de deter o fluxo do processo, em caso de ser modal). Os exemplos aqui apresentados podem ser baixados aqui. Desligado: Programas EXEPor exemplo, o seguinte script mostra o conteúdo da coluna dicScript.SCRIPTBODY usando notepad.exe. procedure displayScript(); Para testar, execute o script no Commander ou basta associar o script ao botão wizard da janela PAD. Desligado: Bibliotecas DLL Win32No caso de uma DLL Win32 são realizadas ligações dinâmicas com as funções exportadas que tem como protótipo: function( pParam: pWideChar; var iSize: integer ): integer; stdcall Onde pParam é um pointer a um string Unicode com iSize caracteres (isto é, 2 bytes por caracter). É importante lembrar que as chamadas de funções devem respeitar as maiusculas e minusculas da definição (Export). No exemplo seguinte, a função exportada editaScript da bilioteca minhaLib.dll é chamada passando como parâmetro o conteúdo da coluna dicScript.SCRIPTBODY: procedure showScript(); Ainda, a DLL pode modificar as informações e sinalizar o fato. Veja no script abaixo, quando a função retornar 1 os dados serão salvos: {$ActiveDataSet DICSCRIPT} // Commander ativa esta tabela antes de executar Notar que, por estar em outro processo, a DLL pode mudar o conteúdo e diminuir o tamanho de cParam, mas não aumentar de tamanho, funcionando como um buffer. O envio de vários parâmetros depende da implementação da DLL. Por exemplo, na ArgowMobile.dll cada parâmetro é separado com ponto-e-vírgula (;). No exemplo abaixo, um arquivo do PC é copiado ao celular conectado via Windows Mobile Device Center (ou ActiveSync) utilizando a ArgowMobile.dll. Note que em cParam o nome do arquivo origem e destino são separados por um ponto-e-vírgula (;): var |
||||||
IntegradoNo modo integrado, os processos externos podem enviar mensagens para Argow e solicitar que efetue tarefas, como atualizar tabelas, enviar textos ao Monitor ou executar scripts. Alem de isto, quando a comunicação é inicializada, Argow envia um pacote com informações da sessão, o que permite uma conexão segura e ampla. Os processos podem estar em forma de DLL ou EXE. No primeiro caso, a chamada desde o script e equivalente a do shell, mas utiliza a classe ar. Continuando com o exemplo anterior, e aproveitando que os processos estão interligados, enviamos o valor da chave primaria (PK) da tabela, e assim permitir que a DLL obtenha, edite e modifique o conteúdo de SCRIPTBODY: procedure showScript(); Neste caso o protótipo é function( const sf: TArDllFrame; pParam: pWideChar; var iSize: integer ): integer; stdcall onde TArDllFrame é uma estrutura que contem as informações da sessão. No caso de programas, a ativação e comunicação e feita utilizando a função send (também da classe ar):procedure showGIS(); Onde os parâmetros são:
|
||||||
RecursosNo caso de comunicação desligada, não requer ferramenta adicional. Já para Integrado, temos disponíveis os recursos necessários para uma fácil e completa integração nos dois ambientes mais utilizados na atualidade: dotNet e Delphi (Nativo). Para testar as funcionalidades, estes recursos podem ser solicitados por e-mail. dotNetPara dotNet, temos disponível argow.interproc.dll que integra seu projeto a Argow com facilidade. DelphiJá para a plataforma Delphi (7 e XEx) temos por um lado uma unit de integração e por outro um conjunto de componentes (derivados do ADO) para conexões equivalentes as utilizadas por Argow. |
||||||
© 2008−2014 Argow |