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.