Web abrindo aplicações locais
Olá pessoal, estava no trabalho precisando fazer um portal de produtos criados pelaempresa; fica mais fácil centralizar tudo em um portal. O usuário entra naintranet, loga apenas uma vez e abre os programas que quiser. Porém, bati acabeça na porta quando percebi que a maioria dos produtos são locais; isto é;funciona localmente na máquina do usuário e precisa ser instalado para o devidofuncionamento.
Bati com acabeça na parede também por perceber que ainda existem programas feitos com alinguagem VB 6.0, Delphi, DOS e outros além de C#.NET.
Referências:
Ferramenta de desenvolvimento: Visual Studio .NET 2008
Linguagem: C#.NET
Linguagem Script: JavaScript
Framework 3.5

Além das referênciasacima, o código pode ser feito em qualquer ferramenta do Visual Studio .NET,uma mais nova ou mais antiga sem problema. Isso serve também para o framework.
Continuandoa história, estava com problemas, pois precisava passar usuário e senha paraque não precisasse logar novamente dentro do aplicativo. A idéia foi àseguinte: O usuário loga no portal e com isso todos os sistemas aparecem praele de acordo com as permissões. Ao clicar em um programa, o software local aparececom a tela correta e logado.
Lembrandoque cada software precisa de usuário e senha. Ficou bem complicado fazer comque esse portal funcionasse, porém a empresa só usa IE (Internet Explorer);ficou mais específico. É muito importante fazer software web que funcione emtodos os browsers, mas já que a empresa usa apenas IE, aproveitei!
Tive quefazer uma alteração nos aplicativos para receber usuário e senha, ou seja, o arquivo.exerecebe usuário e senha criptografados para logar automaticamente.
Na prática
Pesquisandona internet e estudando sobre a linguagem C#.NET, me deparei que o portal ficana intranet e os aplicativos ficam localmente. Portanto, não posso usar o Process.Startou qualquer outro comando do C#.NET, porque não existe software instalado noservidor e sim na máquina. Tive que passar para a linguagem script, VBScript ouJavaScript. Achei um código que verifica um caminho específico via javascript efunciona apenas no browser IE (Internet Explorer). Code 1.1
<script type="text/javascript" language="javascript"> function AbreAplicacao(caminho, tipo, usuario, senha) { var fso = new ActiveXObject('Scripting.FileSystemObject'); var WshShell = new ActiveXObject('WScript.Shell'); if (fso.FileExists(caminho)) WshShell.Exec(caminho+' '+tipo+' ' + usuario+ ' ' +senha); else alert('A aplicação não está instalada neste computador.') } </script> |
Referência: Code 1.1
Em resumo,o código usa ActiveX e acessa o FileSystemObject. Depois disso, uso oWScript.Shelll, se no FileSystemObject existir o arquivo que mandei comocaminho na função, ele chama passando os parâmetros, caso contrário exibe umalerta na tela falando que a aplicação não está instalada.
No primeiromomento, chamando a função passando os dados via javascript funcionouperfeitamente. Agora o desafio seria executar o mesmo dado pela linguagemC#.NET na plataforma ASP.NET.
Tentei detudo, mas não estava dando certo. Resumindo, o que deu certo foi criar um Label<asp:label...> dentro da página chamando a função javascript. (Code 1.2)
//colocar no final da página <asp:Label ID="lblScript" runat="server"></asp:Label> string comando = @"<script>AbreAplicacao('C:\\Caminho da Aplicacao\\Arquivo.exe','DIGITACAO','usuario','senha')</script>"; lblScript.Text = comando; |
Referência: Code 1.2
Assim,mesmo a página web estando no servidor; chama uma aplicação que está localmentena máquina do usuário. Resolveu o meu problema perfeitamente. É lógico queexiste uma regra específica para o tipo da aplicação que não mostrei aqui mas,o importante é que, você pode usar o código explicado acima para chamaraplicativos dentro do seu computador.
Lembrandoque só funciona se o site tiver HTTPS e no Internet Explorer.
Fico por aqui, espero que tenha gostado.
Mauricio Junior
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.