Usuário com melhor resposta
Como Forçar o WebBrowser Control Para Usar o IE9 ou Superior?

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:
No Internet Explorer 11 assim:
MS INFORMATICA - Projeto Marinner
- Editado Márcio Silva Lima segunda-feira, 13 de julho de 2015 13:17
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
- Marcado como Resposta Márcio Silva Lima sexta-feira, 17 de julho de 2015 04:25
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.A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
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
-
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.
A 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
-
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
- Editado Márcio Silva Lima segunda-feira, 13 de julho de 2015 22:09
-
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.
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
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
-
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.
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
Entendo! ;)
MS INFORMATICA - Projeto Marinner
-
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
-
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.1MS INFORMATICA - Projeto Marinner
-
Olá Márcio,
Tudo bem?
Você chegou a examinar estas informações?
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
-
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
-
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
- Marcado como Resposta Márcio Silva Lima sexta-feira, 17 de julho de 2015 04:25
-
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
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
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
A 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
- Editado Márcio Silva Lima sábado, 18 de julho de 2015 06:04
-
E para celebrar, claro! Deixo enfim, a interface do meu Navegador Marinner Internet 6, esta solução me empolgou! Rsrs...
MS INFORMATICA - Projeto Marinner
- Editado Márcio Silva Lima sábado, 18 de julho de 2015 06:25
-
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:00002af8Ou 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.
-
-
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
-
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; } } } }A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-