Dev (Back & Front)ARTIGO

User Control Windows executando no Internet Explorer – Parte 02

Olá, internautas! Hoje daremos continuidade ao artigo anterior, onde vimos como executar um “user control” do Windows dentro do Internet
Explorer, mas ficou faltando a parte final, onde executaremos de fato o controle dentro da página web.

Peço que leia atentamente a primeira parte antes de começar esta. Criei um projeto do tipo Web chamado “ProjetoWeb” e dentro há uma pasta chamada “Controles”. Depois de compilar, enviei tudo para dentro da pasta, todas as dlls, arquivos de configuração e tudo mais.

É necessário marcar todas as referências como “Copy Local” igual a “True”. Tive que fazer isso para funcionar de fato o controle: 

Depois de compilado, o software jogou tudo para a pasta “Controles” automaticamente:

O próximo passo foi criar uma página web específica que usa o controle compilado. Pra isso, uso um “object” e com ele posso passar parâmetros necessários para acesso. Na parte HTML (aspx), utilizo o “<asp:literal>”:

    <table border="0"><br />        <tr><br />            <td align="center" valign="top"><br />                <br /><br />                <asp:Literal ID="objeto" runat="server" /><br />            </td><br />        </tr><br />    </table><br />..........................................................

Na parte C#, fica bem simples e fácil. Criei uma “StringBuilder” e depois atribuí ao meu objeto “literal” chamado objeto:

StringBuilder stControle = new StringBuilder();<br />stControle.Append("<object id='ControlConfigurarScanner' <br />classid='Controles/DigitalizadoraRetaguarda.dll#ImagonFormDigitalizadora.ControlConfigurarScanner' <br />height='161' width='445'>");<br />stControle.Append("<PARAM NAME='Parametro1' VALUE='0' />");<br />        stControle.Append("<PARAM NAME='Parametro2' VALUE='1' />");<br />        stControle.Append("<PARAM NAME='Parametro3' VALUE='2' />");<br />        stControle.Append("<PARAM NAME='Parametro4' VALUE='3' />");<br />        stControle.Append("<PARAM NAME='Parametro5' value='4' />");<br />        stControle.Append("</object>");<br />        objeto.Text = stControle.ToString();<br />......................................................................

É necessário prestar atenção para alguns fatos importantes utilizando o “object”. O id, coloquei o mesmo nome da tela .cs, ou seja, “ControlConfigurarScanner”. Na parte de classid, comecei do endereço da pasta de onde foi colocado a dll, isto é, classid=’Controles/…”.

Continuando com o “classid”, depois de colocar o início indicando a pasta “Controles”, continuei com outras informações específicas: “Controles/DigitalizadoraRetaguarda.dll#ImagonFormDigitalizadora.ControlConfigurarScanner”.

A primeira é o nome da pasta, seguido por barra e o nome da dll gerada do projeto user control. O próximo passo é colocar o sharp (#) seguido do namespace completo do projeto. Continuando na primeira linha, coloquei os atributos height=161 e width=445 referentes ao tamanho da tela desenvolvida. Na sua tela, coloque o tamanho que desejar. Coloquei apenas o tamanho da tela.

Criei outra linha relacionada a parâmetros com nome e valor. São cinco parâmetros e valores necessários para a tela. O nome pode ser qualquer um e o valor também, de acordo com a sua necessidade. 

No final da linha, fechei com o “</object>” e atribuí ao objeto da tela. “objeto.Text = stControle.ToString();”

Para pegar os parâmetros enviados e seus respectivos valores, basta usar uma declaração simples:

 public Int32 Parametro1 { get; set; }<br />    public string Parametro2 { get; set; }<br />    public string Parametro3 { get; set; }<br />    public string Parametro4 { get; set; }<br />    public Int32 Parametro5 { get; set; } <br />.............................................................

De acordo com o código acima, para pegar o valor só declarei as variáveis como “public” e com “get” e “set”. Assim o valor é pego automaticamente.

Antes de testar localmente, certifique-se de que as dlls do outro projeto estejam na pasta controles e publique no IIS; isso porque o funcionamento necessariamente precisa do servidor de internet chamado IIS. A imagem abaixo mostra o projeto publicado e sem qualquer problema.

Com o “User Control”, consegui acessar toda a máquina do usuário sem qualquer problema. Pegar dados, números de hardware, acessar pastas e tudo mais. Porém, como falei na primeira parte deste artigo, só funciona no Internet Explorer e com uma certa permissão que precisa ser gerada.

Para a permissão, acessse: Menu iniciar -> Painel de Controle -> Ferramentas Administrativas -> Microsoft .NET Framework 2.0 Configuration -> Acessar a pasta RunTime Security Policy -> Machine.

Dentro da pasta Machine existem duas sub-pastas principais para criação (Code Groups e Permissions Sets). Primeiro é preciso colocar as permissões na pasta permissions set e depois adicionar um code groups:

Isso é para exportar um arquivo .msi e executar antes do início da tela. Depois disso, o acesso será rápido e simples. A única coisa que o .msi faz é colocar as permissões na máquina de quem está acessando. A imagem abaixo mostra como exportar o pacote para instalação.

Bom, espero que tenha ajudado até aqui. Não é tão complicado, só precisa prestar atenção nos detalhes informados para o perfeito funcionamento.

Qualquer dúvida, pode entrar em contato!

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil