🔥 Apps, books, system as a service, podcast and more



User Control Windows executando no Internet Explorer (parte 2 de 2)

        Olá Internautas, hoje gostaria de dar continuidade ao artigo com controle feito usando User Control Windows executando no Internet Explorer.
   
    De acordo com o artigo passado, ou seja, o parte 1 (http://aspneti.com/User+Control+Windows+executando+no+Internet+Explorer+parte+1+861,0.aspx), ficou faltando a parte final onde executo de fato o controle dentro da página web.
   
    Peço que leia atentamente a primeira parte, antes de começar a segunda. Criei um projeto do tipo Web chamado "ProjetoWeb" e dentro tem 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. Imagem 1
   
Imagem 1
alt
clique para ampliar

    Depois de compilado, o software jogou tudo para a pasta "Controles" automaticamente. Imagem 2

Imagem 2
alt
clique para ampliar

    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>". Code 1.

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

    Na parte C#, fica bem simples e fácil. Criei uma "StringBuilder" e depois atribuir ao meu objeto "literal" chamado objeto. Code 2
   
    StringBuilder stControle = new StringBuilder();
       
        stControle.Append("<object id='ControlConfigurarScanner'
        classid='Controles/DigitalizadoraRetaguarda.dll#ImagonFormDigitalizadora.ControlConfigurarScanner'
        height='161' width='445'>");
        stControle.Append("<PARAM NAME='Parametro1' VALUE='0' />");
        stControle.Append("<PARAM NAME='Parametro2' VALUE='1' />");
        stControle.Append("<PARAM NAME='Parametro3' VALUE='2' />");
        stControle.Append("<PARAM NAME='Parametro4' VALUE='3' />");
        stControle.Append("<PARAM NAME='Parametro5' value='4' />");
        stControle.Append("</object>");

        objeto.Text = stControle.ToString();
    ......................................................................
    Code 2
   
    É 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 5 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. Code 3.
   
    public Int32 Parametro1 { get; set; }
    public string Parametro2 { get; set; }
    public string Parametro3 { get; set; }
    public string Parametro4 { get; set; }
    public Int32 Parametro5 { get; set; }
    .............................................................
    Code 3
   
    De acordo com o Code 3, 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 que as dlls do outro projeto estão na pasta controles e publique no IIS, isso porque o funcionamento necessariamente precisa do servidor de internet chamado IIS. A imagem 3 mostra o mesmo publicado e sem qualquer problema.

Imagem 3
alt
clique para ampliar

    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 no início do artigo (parte 1), só funciona no Internet Explorer e com uma certa permissão que precisa ser gerada.
   
    Para a permissão, acesssei: 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 precisei colocar as permissões na pasta permissions set e depois adicionar um code groups. (Imagem 4)
   
Imagem 4
alt
clique para ampliar

    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 5 mostra como exportar o pacote para instalação.
   
Imagem 5
alt
clique para ampliar    

    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 pelo site.

Sign up to our newsletter

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.

Top