2010-07-27 15 views
14

Me doy cuenta de que es una versión temprana e inestable. No me gustaría intercambiar el control predeterminado del navegador web para IE9 en ningún otro proyecto, pero en este caso necesito específicamente que IE9 lo compare junto con otras versiones.¿Es posible que el control .NET WebBrowser use IE9?

Me gustaría que el control .NET WebBrowser use IE9 en lugar de la versión predeterminada de IE en la máquina. Tengo el control total de la máquina, por lo que no es un problema piratear los archivos del sistema o cualquier otra cosa que sea necesaria.

Normalmente, esto se puede lograr instalando la actualización en IE, pero en el caso de IE9, instala una aplicación por separado, dejando la versión actual de IE intacta. Esto significa que el control WebBrowser continúa usando la versión actual (lo cual tiene sentido y fue un movimiento inteligente por parte de MS, ya que IE9 todavía está en desarrollo). Pero en mi caso (borde) necesito el control WebBrowser para usar IE9.

¿Es posible incrustar IE9 en una aplicación de formularios .NET?

EDITAR

Con Hans Passant's help me estoy poniendo un poco más lejos. Algo muy interesante está sucediendo dentro del directorio de archivos progresivos de IE9. Hay un directorio llamado "iepreview.exe.local" que, cuando se elimina, hace que la aplicación de Vista previa de IE9 use IE8 (comprobado con la prueba acid3).

No es exactamente lo que quiero, pero me pregunto si esto es algún tipo de redirección que podría explotar para mis necesidades.

EDIT 2

He intentado aplicar el hack .local tanto a mi copia de iexplore.exe y mi aplicación .NET y me he dado cuenta de algo más interesante - ambas aplicaciones comenzaron a usar Internet Explorer 7 en lugar de IE8 (mi versión de IE) o IE9.

¿Podría ser esto posible intentar usar IE9 y luego volver a recurrir a IE7? Parece extraño que incluso tenga IE7 disponible, pero esa es la cadena de useragent que comienza a usar.

Respuesta

3

La única forma en que IE9 podría instalarse lado a lado es cuando usa nuevos GUID para las interfaces y coclasses. Lo que significa que no puede usar WebBrowser, tiene los GUID codificados.

Hay otra opción, usar el contenedor AxHost. Haga clic con el botón derecho en la caja de herramientas, elija Elementos, seleccione la pestaña Componentes COM y ubique IE9 en la lista. No tenía idea de cómo se podría llamar, el antiguo nombre era "Microsoft Web Browser", atendida por c: \ windows \ system32 \ ieframe.dll

Tendrá que arreglárselas sin las clases amigables WebBrowser y HtmlDocument.

+0

No tengo ningún registro COM en mi directorio de IE Platform Preview. Todas las DLL están en un subdirectorio iepreview.exe.local y el mshtml tiene DllRegisterServer. Así que espero que pueda colocarse en su lugar, o incluso registrar donde está, pero probablemente haya más que eso. – Rup

+0

Huele a COM sin registro. Eso tiene sentido, pero hace su tarea considerablemente más difícil. Tendría que copiar todo en el directorio de construcción de su proyecto. Y crea tu propio manifiesto. Brrr. –

+0

He actualizado mi pregunta con más información sobre esto. –

12

En realidad, puede modificar su registro para obligar a su programa a utilizar la representación de IE9. Ir a HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION y añadir un nuevo valor DWORD denominado el nombre del programa (.exe) y un valor decimal establecido en 9999.


Puede también modifique su registro para obligar a su programa a utilizar la representación de GPU IE9. Vaya a HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_GPU_RENDERING y agregue un nuevo valor DWORD llamado nombre del programa (con.exe) y un valor hexadecimal establece en 1.


esto sólo funciona si usted realmente tiene IE9! Primero debe descargar IE9, antes de hacerlo, o no funcionará. Si desea procesar las páginas con IE8 sólo cambia el 9999 a 8888.

Nota: procesamiento de GPU está disponible sólo en IE9

2

Después de un montón de Google-ing he descubierto que hay dos diferentes conjuntos de claves para FEATURE_BROWSER_EMULATION para aplicaciones de 32 bits y 64 bits. Debe configurar el suyo en el lugar correcto dependiendo de la máquina que esté ejecutando. También debe asegurarse de instalar la versión correcta del navegador que desea emular.

32 bits:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\**FEATURE_BROWSER_EMULATION** 

Value Key: (DWORD) yourapplication.exe 

64 bits:

HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\Microsoft\Internet Explorer\MAIN\FeatureControl\**FEATURE_BROWSER_EMULATION** 

Value Key: (DWORD) yourapplication.exe 

El valor para configurar esta tecla para se (tomado de MSDN aquí) como valores decimales:

9999 (0x270F) Inter net Explorer 9. Las páginas web se muestran en el modo Estándares IE9, independientemente de la directiva! DOCTYPE.

9000 (0x2328) Internet Explorer 9. Las páginas web que contienen basados ​​en estándares! DOCTYPE directivas se muestran en el modo de IE9.

8888 (0x22B8) Las páginas web se muestran en el modo estándar de IE8, independientemente de la directiva! DOCTYPE.

8000 (0x1F40) Las páginas web que contienen directivas! DOCTYPE basadas en estándares se muestran en modo IE8.

7000 (0x1B58) páginas web que contienen basados ​​en estándares! DOCTYPE directivas se muestran en el modo estándar de IE7.

Cuestiones relacionadas