
Olá, pessoal! Estava no trabalho
precisando fazer um portal de produtos criados pela empresa, para ficar mais fácil
centralizar tudo. O usuário entra na intranet, loga apenas uma vez
e abre os programas que quiser. Porém, bati a cabeça na porta quando percebi
que a maioria dos produtos são locais, isto é, funcionam localmente na máquina
do usuário e precisam ser instalados para o devido funcionamento. Bati com a cabeça na parede também
por perceber que ainda existem programas feitos com a linguagem 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ências acima, 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.
Continuando a história, estava com
problemas, pois precisava passar usuário e senha para que não fosse necessário logar
novamente dentro do aplicativo. A idéia foi a seguinte: o usuário loga no
portal e, com isso, todos os sistemas aparecem pra ele, de acordo com as
permissões. Ao clicar em um programa, o software local aparece com a tela
correta e logado.
Lembrando que cada software precisa
de usuário e senha. Ficou bem complicado fazer com que esse portal funcionasse,
porém a empresa só usa IE, o que ficou mais específico. É muito
importante fazer software web que funcione em todos os browsers, mas já que a
empresa usa apenas IE, aproveitei!
Tive que fazer uma alteração nos
aplicativos para receber usuário e senha, ou seja, o arquivo.exe recebe usuário
e senha criptografados para logar automaticamente.
Na prática
Pesquisando na internet e estudando
sobre a linguagem C#.NET, vi que o portal fica na intranet e os
aplicativos ficam localmente. Portanto, não posso usar o Process.Start ou
qualquer outro comando do C#.NET, porque não existe software instalado no
servidor, e sim na máquina. Tive que passar para a linguagem script, VBScript ou
JavaScript. Achei um código que verifica um caminho específico via javascript e
funciona apenas no Internet Explorer:
<script type="text/javascript" language="javascript"><br /><br /> function AbreAplicacao(caminho, tipo, usuario, senha) {<br /><br /> var fso = new ActiveXObject('Scripting.FileSystemObject');<br /><br /> var WshShell = new ActiveXObject('WScript.Shell');<br /><br /> if (fso.FileExists(caminho))<br /><br /> WshShell.Exec(caminho+' '+tipo+' ' + usuario+ ' ' +senha);<br /><br /> else<br /><br /> alert('A aplicação não está instalada neste computador.')<br /><br /> }<br /><br /> </script>Referência: Code
1.1
Em resumo, o código usa ActiveX e
acessa o FileSystemObject. Depois disso, uso o WScript.Shelll, se no
FileSystemObject existir o arquivo que mandei como caminho na função, ele chama
passando os parâmetros, caso contrário exibe um alerta na tela falando que a
aplicação não está instalada.
No primeiro momento, chamando a
função passando os dados via javascript funcionou perfeitamente. Agora o
desafio seria executar o mesmo dado pela linguagem C#.NET na plataforma
ASP.NET.
Tentei de tudo, 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:
//colocar no final da página<br /><br /><asp:Label ID="lblScript" runat="server"></asp:Label><br /><br /><br /><br /> string comando = @"<script>AbreAplicacao('C:\\Caminho da Aplicacao\\Arquivo.exe','DIGITACAO','usuario','senha')</script>";<br /><br /> lblScript.Text = comando;Referência: Code
1.2
Assim, mesmo a página web estando no
servidor, chama uma aplicação que está localmente na máquina do usuário.
Resolveu o meu problema perfeitamente. É lógico que existe 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 chamar aplicativos dentro do seu
computador.
Lembrando que só funciona se o site
tiver HTTPS e no Internet Explorer.
Fico por aqui,
espero que tenha gostado.








