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