none
Como Forçar o WebBrowser Control Para Usar o IE9 ou Superior? RRS feed

  • Pergunta

  • Olá, a todos!

    Uso o Visual Studio 2013 e o 2015. Tenho tentado sem êxito para fazer com que o Componente WebBrowser use o IE9 ou Superior, pois na hora de emular ele abre o IE8 isso dá um certo desconforto para meus clientes pois algumas páginas ao serem carregadas se abre uma janela popup para atualizar o navegador. Eu tenho um projeto, simulador de Sistema Operacional, uma Interface Operacional que substitui Cybercafés,  já trabalhando na 6ª Edição e tem um navegador neste projeto, (desmembrado) que preciso fazer com que ele emule no renderizador do IE9 ou Superior.

    Como mencionei acima, já tentei sem sucesso fazer com que este faça o que eu preciso, indo no Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION e adicionei um novo valor DWORD com o nome do meu aplicativo, (usei um a parte para testes) exemplo:  Marinner.exe por exemplo e coloquei: 

    Valor 9000 em decimal para rodar como IE9,

    Valor 10000 para rodar como IE10 e

    Valor 11000 para rodar como IE11.

    Porém sem sucesso. Inclusive modifiquei também o nome do DWORD para "Marinner.vshost", que também é um método, mas, sem eficácia.

    Alguém já conseguiu obter uma forma eficaz para resolver esta questão?
    Agradeço desde já as vindouras respostas.

    Abaixo deixo a ilustração da diferença entre renderizadores, como todos já entendem:

    No meu navegador fica assim:

    Marinner Internet 5.3

    No Internet Explorer 11 assim:

    IE11


    MS INFORMATICA - Projeto Marinner




    segunda-feira, 13 de julho de 2015 13:14

Respostas

  • Nosso moderador já Marcou como resposta minha última postagem, mas eu ainda estava analisando e consegui finalmente resolver o que tanto precisava!
    Num aplicativo teste:

    A Solução estava aqui: (seguindo as Orientações primárias do nosso amigo Mr. GMSOFT, deixando o projeto em X86 não podendo ser Any CPU e nem X64;
    Aí fui Neste detalhe dentro do registro: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION. e lá coloquei o nome do aplicativo teste assim gravando os DWORDS:

    WebNet.vshost.exe = 100001(decimal) e WebNet..exe=100001(decimal) depois de testá-lo encontrei a surpresa na imagem acima! Valeu pessoal! Caso resolvido!







    MS INFORMATICA - Projeto Marinner

    sexta-feira, 17 de julho de 2015 04:22

Todas as Respostas

  • O método mencionado funciona desde que:

    1 - A aplicação seja roda fora do visual Studio através do executável;

    2 - O projeto tem que ser X86 não pode ser Any CPU e nem X64;

    3 - O navegador deve estar instalado na versão que deseja emular.


    Com isso funcionara de boa.


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 13 de julho de 2015 14:06
  • Opa! Chegando agora da clientela.

    Sim. Testei a aplicação tanto dentro como fora do Visual Studio, no entanto vou mudar para X86 e quanto ao navegador instalado já está, pois uso o Windows 8.1 já com o IE11.

    Passo depois para deixar a resposta.
    Grato pela atenção, meu nobre Mr. GMSOFT



    MS INFORMATICA - Projeto Marinner

    segunda-feira, 13 de julho de 2015 18:33
  • O método mencionado funciona desde que:

    1 - A aplicação seja roda fora do visual Studio através do executável;

    2 - O projeto tem que ser X86 não pode ser Any CPU e nem X64;

    3 - O navegador deve estar instalado na versão que deseja emular.


    Com isso funcionara de boa.


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    De volta...

    Fiz os testes como indicastes mas não obtive êxito. O interessante é que quando vou no meu IE11  e incluo o "www.google.com" por exemplo, ele emula para o renderizador anterior, isto é, o IE8. Sei que está correto, é algo que está errado, mas eu vou consegui. Se tiveres mais alguma dica, agradecido!


    MS INFORMATICA - Projeto Marinner

    segunda-feira, 13 de julho de 2015 20:17
  • Olá, você pode utilizar um recurso  no próprio HTML para forçar a versão de browser

    Esse recurso é o : 

    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />

    Faça algumas buscas por X-UA-Compatible, e vc encontrará o que mais se adapta a sua necessidade.


    Att, Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".


    Obrigado, amigo, mas esse recurso só  funciona em páginas que eu criar, ou há como inserir este scritpt em alguma parte do Projeto? Como exemplo eu peguei a página do "Google" e coloquei este código e deu certo ao carregar no meu Navegador, porem não preciso que seja assim, a não ser que tenha como inserir, como falei acima. É preciso alterar o arquivo "Web.config"?


    MS INFORMATICA - Projeto Marinner



    segunda-feira, 13 de julho de 2015 22:04
  • Todos os testes que fiz e uso, são no modo padrão do navegador e toda alteração que fizer influencia diretamente neste metodo.

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 13 de julho de 2015 23:01
  • Olá Márcio,

    você pode alterar seu WebConfig e testar, veja se funciona isso:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <httpProtocol>
          <customHeaders>
            <clear />
            <add name="X-UA-Compatible" value="IE=Edge" />
          </customHeaders>
        </httpProtocol>
      </system.webServer>
    </configuration> 


    Att, Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".

    Rsrs... Fiz isto mesmo no Web.Config mas não deu em nada. Acho que deve haver alguma incompatibilidade por aqui.  Caramba! Mas não vou desistir.  Preciso desta melhoria neste Navegador, é para este meu projeto já na sua 6ª Edição, um Simulador de SO (Interface Operacional) o Navegador desta Edição, é desmembrado do projeto para justamente fazer esta modificação. As versões anteriores o Navegador era 'embutido'. Tenho este Projeto há 3 anos e me ajuda e muito na proteção do Windows, PCs que não formato há um bom tempo. São 10 PCs e todos eles estão com  este Simulador. Fechando todas as funções do Windows à impedir que os adolescentes não mexam no Sistema. IE, Firefox e Google Chrome são impedidos de serem abertos assim como qualquer janela do Windows. Todas as Tarefas como Resolução de Vídeo, entre outras importantes eu coloquei-os dentro do projeto.
    Continuarei por aqui, mas agora indo por outro Sistema, vou ampliar meus  parâmetros de diagnósticos. Grato pela paciência.



    MS INFORMATICA - Projeto Marinner

    terça-feira, 14 de julho de 2015 00:02
  • Todos os testes que fiz e uso, são no modo padrão do navegador e toda alteração que fizer influencia diretamente neste metodo.

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    Entendo! ;)


    MS INFORMATICA - Projeto Marinner

    terça-feira, 14 de julho de 2015 00:03
  • Boa noite, utilizo esse padrão da alteração do registro para modificar o IE dos projetos que utilizo. Depois de muita pesquisa descobri que para funcionar, o registro deve ser feito com o nome do executável.

    Marinner.exe = 11000

    Para o debugger funcionar, você tem que ter o registro do Marinner.svhost támbém criado no registro do windows, funciona em ambos os tipos de compilação, utilizo Any Cpu nos projetos e funciona perfeitamente.

    A diferença que fiz a definição na chave do usuário corrente.

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation

    Com isso meu sistema passou a utilizar o IE 11


    Gilson Joanelo - Desenvolvedor Web

    terça-feira, 14 de julho de 2015 02:26
  • Boa noite, utilizo esse padrão da alteração do registro para modificar o IE dos projetos que utilizo. Depois de muita pesquisa descobri que para funcionar, o registro deve ser feito com o nome do executável.

    Marinner.exe = 11000

    Para o debugger funcionar, você tem que ter o registro do Marinner.svhost támbém criado no registro do windows, funciona em ambos os tipos de compilação, utilizo Any Cpu nos projetos e funciona perfeitamente.

    A diferença que fiz a definição na chave do usuário corrente.

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation

    Com isso meu sistema passou a utilizar o IE 11


    Gilson Joanelo - Desenvolvedor Web


    Certo, amigo!
    Eu fui por lá, mas seguindo a Chave "MAIN", porém não tem a subchave "BrowserEmulation", mas a dica que me dás já é bem diferente, só me diga em que subchave eu devo por um  novo valor "DWORD" ou é na chave "BrowserEmulation", mesmo? Grato. Eu estou de saída por aqui, na volta eu entro por aqui. Abraço e grato pela atenção. Lembrando que eu uso o Windows 8.1 

    MS INFORMATICA - Projeto Marinner

    terça-feira, 14 de julho de 2015 12:19
  • Olá Márcio,

    Tudo bem?

    Você chegou a examinar estas informações?

    LINK


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.



    • Editado Marcos SJ terça-feira, 14 de julho de 2015 17:06
    terça-feira, 14 de julho de 2015 17:04
  • Analisei sim, fiz tudo que se é para fazer e o navegado ainda emula no renderizador antigo. Vou instalar outro HD com Windows, 7 ou 8.1 - 32bits  para ver se há algo errado com este Sistema. Tentei de tudo! Na verdade não é desde a postagem que venho tentando, já há muitos dias, dei uma pausa e retornei a "matutar" para achar a solução. Vou ver o que posso fazer por aqui. Conseguindo eu posto por aqui.  Agradeço a disponibilidade, e quem tiver mais dicas eu estou só "ouvidos", rsrs...

    MS INFORMATICA - Projeto Marinner

    • Marcado como Resposta Marcos SJ quarta-feira, 15 de julho de 2015 12:25
    • Não Marcado como Resposta Marcos SJ sexta-feira, 17 de julho de 2015 11:57
    terça-feira, 14 de julho de 2015 22:17
  • Nosso moderador já Marcou como resposta minha última postagem, mas eu ainda estava analisando e consegui finalmente resolver o que tanto precisava!
    Num aplicativo teste:

    A Solução estava aqui: (seguindo as Orientações primárias do nosso amigo Mr. GMSOFT, deixando o projeto em X86 não podendo ser Any CPU e nem X64;
    Aí fui Neste detalhe dentro do registro: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION. e lá coloquei o nome do aplicativo teste assim gravando os DWORDS:

    WebNet.vshost.exe = 100001(decimal) e WebNet..exe=100001(decimal) depois de testá-lo encontrei a surpresa na imagem acima! Valeu pessoal! Caso resolvido!







    MS INFORMATICA - Projeto Marinner

    sexta-feira, 17 de julho de 2015 04:22
  • Que bom que conseguiu, mais sinceramente acho que já passou da hora da Microsoft atualizar esse componente que utiliza o motor do IE6 para renderizar no WebBrowser para uma versão pelo menos a IE8

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    sexta-feira, 17 de julho de 2015 12:43
  • Que bom que conseguiu, mais sinceramente acho que já passou da hora da Microsoft atualizar esse componente que utiliza o motor do IE6 para renderizar no WebBrowser para uma versão pelo menos a IE8

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    Eita! Pois eu tinha colocado uma discussão sobre isto mesmo! Mas excluí, ninguém tinha participado. Como é a Microsoft, com todo avanço que tem nas suas ferramentas para Programação, mas "peca" neste importante item? Tem que rever mesmo isso! Desde o VB2008 ainda o WebBrowser renderiza para o IE8? Aí, nas nossas aplicações, como por exemplo o "Google Maps" sempre dava mensagem de configuração do Modo de Compatibilidade. Mas com os esforços de todos, conseguimos forçar e por fim termos uma renderização atualizada. Mas que o "negócio" está ultrapassado, está! Poxa! Já estamos com o Visual Studio 2015! Alô MICROSOFT!


    MS INFORMATICA - Projeto Marinner


    sábado, 18 de julho de 2015 05:59
  • E para celebrar, claro! Deixo enfim, a interface do meu Navegador Marinner Internet 6, esta solução me empolgou! Rsrs...

    Marinner Internet 6


    MS INFORMATICA - Projeto Marinner




    sábado, 18 de julho de 2015 06:10
  • A SOLUÇÃO DO REGISTRO ME SERVIU DE ÓTIMA REFERENCIA PARA UMA APLICAÇÃO. 

    Mas não querendo ser chato e já sendo, não seria possível fazer esta alteração no LOAD() da aplicação via código, digo, escrever no registro as chaves determinadas automaticamente ao abrir a aplicação, sem ser necessário a utilização do REGEDIT ou criar um arquivo .reg para executar esta tarefa? 

    Afinal de contas, informatizar é sinônimo de facilitar. 

    Eu resolvi o problema utilizando o comando SHELL("meu arquivo.reg") porém gostaria de uma solução mais aprofundada de como escrever no registro atraves do VB criando as DWORD compreendem? 

    Desde já, agradeço os esclarecimentos citados, pois foi de ótima serventia na minha aplicação também.

    Como passar este codigo do arquivo.reg para lingual visual basic?

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

    "AcroRd32.exe"=dword:0000270f
    "vidQuest.exe"=dword:00002af8
    "Ghosts 3.0.exe"=dword:00002af8
    "Ghosts 3.0.svhost"=dword:00002af8

    Ou alguma solução? sei lá, importar o arquivo para o projeto e dar a linha de comando para ele executar em modo hide...

    Alguem? 


    Dan Venâncio, Chefe de Cozinha Marítimo.

    terça-feira, 29 de março de 2016 17:50
  • Pode ser feito sem problema nenhum diretamente no registro do windows, use as funções de manipulação de registro

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 29 de março de 2016 17:58
  • sim meu caro, com toda certeza!

    A questão é como.

    Existe algum exemplo onde eu possa tirar de referencia, de como transformar esses codigos do .REG dentro do visual basic? e no caso do caminho ser invalido, cria-lo. 

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

    "AcroRd32.exe"=dword:0000270f
    "vidQuest.exe"=dword:00002af8
    "Ghosts 3.0.exe"=dword:00002af8
    "Ghosts 3.0.svhost"=dword:00002af8


    Dan Venâncio, Chefe de Cozinha Marítimo.


    • Editado Dan Venancio terça-feira, 29 de março de 2016 18:55
    terça-feira, 29 de março de 2016 18:54
  • Um exemplo simples, que pode ser facilmente adaptado, segue minha função de alterar o proxy.

    PS: Infelizmente não dou a resposta justamente para forçar aos usuários a fazer pelo menos uma pesquisa básica.
     public void MudaProxy()
            {
                //Randomizador
                Random rnd = new Random();
    
                int random = 0;
                string proxy = string.Empty;
                string porta = string.Empty;
                string linha2 = string.Empty;
    
                List<string> MeuProxy = new List<string>();
    
                if (File.Exists(@"proxy.txt"))
                {
                    using (StreamReader reader = new StreamReader(@"proxy.txt"))
                    {
                        while ((linha2 = reader.ReadLine()) != null)
                        {
                            MeuProxy.Add(linha2);
                        }
                        //Embaralha o proxy escolhendo aleatoriamente
                        string[] linha = MeuProxy[random].Split(';');
    
                        random = rnd.Next(0, linha.Length);
    
                        //Recebe o proxy de forma randomica
                        proxy = linha[0].ToString();
                        porta = linha[1].ToString();
    
    
    
                        string SavedLegacySettings = @"46,00,00,00,c3,1d,00,00,03,00,00,00,13,00,00,00,31,38,36,2e,32,33,32,2e,31,36,30,2e,35,34,3a,38,30,38,30,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00";
                        try
                        {
                            //Registra o Ip e porta no registro do Windows
    //Para manupulação do registro basta passar a chave
    RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\", RegistryKeyPermissionCheck.ReadWriteSubTree);

    //Setando Valores no registro key.SetValue("ProxyServer", proxy + ":" + porta, RegistryValueKind.String);
    key.Close(); } catch (Exception ex) { throw; } } } }


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quarta-feira, 15 de junho de 2016 16:11
  • Cara!!!!!

    Salvou meu dia! obrigado a todos que ajudaram.

    sábado, 6 de maio de 2017 00:32