Minhas DLLs com o Magic© xpa™

Manoel Frederico

 

Desde o lançamento do Magic xpa 1.8 (em Junho/2009), com o advento do client RIA para Windows .NET, e posteriormente do Magic xpa 2.o (em Julho/2011) e o advento do Deployment Engine (runTime) para Windows. NET, uma dúvida tem surgido aos desenvolvedores:

Como ficam as DLLs Win32, já que a execução agora é em .NET?

DLLs têm sido utilizadas para muitas finalidades nas aplicações, como interação com equipamentos (ex: impressoras fiscais) e exploração de recursos do sistema operacional (ex: fazer um print screen).

A boa notícia é: a função CALLDLL() continua mantida (suportada) no produto.

Continua sendo possível invocar as DLLs normalmente nas novas versões do Magic xpa.

(NOTA: a função WinHWND() mudou a partir do Magic xpa 2.0. Consulte mais sobre isso no DevNET).

Contudo, comportamentos diferentes ocorrerão quando a solução for do tipo RIA. 

Isso porque a função CALLDLL() é Server Side, ou seja, ele só executa em tarefas batch (do lado do servidor).

Mas há uma outra boa notícia: resolver isso também é fácil.

Existem duas maneiras:

P/Invoke

Todo código .NET pode invocar uma DLL Win32, através de uma técnica denominada P/Invoke.

Logo, se colocarmos a chamada para DLL dentro de uma instrução Invoke .NET, ela será executada do lado client, tal qual ocorre com as aplicações Desktop/OpenClient:

Código .NET

Outra forma, é substituir as chamadas às DLLs por código .NET (C# ou VB.NET) equivalente, que executem as mesmas tarefas:

Temos inclusive publicado, em posts anteriores, exemplos de como o recurso de codificação nativa em .NET pode trazer muitos benefícios para a aplicação/solução final.

Tudo que é codificado através de um Invoke .NET, executará tanto do lado Server (tarefas batch), quanto do lado Client (tarefas OnLine e RIA).

Neste link você pode baixar um pequeno projeto exemplo (em Magic xpa 2.0a), onde é possível executar um print screen usando código .NET e executar um document print, tanto com P/Invoke quanto com CALLDLL().

 


Manoel Frederico Silva
Product Manager & MAGIC Evangelist / Magic Software Brasil

 

 

 

 

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *