2010-07-27 11 views
14

Mi rendo conto che è una versione anticipata e instabile. Non mi verrebbe in mente di sostituire il controllo predefinito del browser Web per IE9 in qualsiasi altro progetto, ma in questo caso ho bisogno in particolare di IE9 per confrontarlo con altre versioni.È possibile che il controllo .NET WebBrowser utilizzi IE9?

Mi piacerebbe che il controllo .NET WebBrowser utilizzi IE9 invece della versione predefinita di IE sulla macchina. Ho il pieno controllo della macchina, quindi non è un problema mettere a posto file di sistema o qualsiasi altra cosa possa essere necessaria.

Normalmente, questo potrebbe essere ottenuto installando l'aggiornamento a IE, ma nel caso di IE9, installa un'applicazione separata, lasciando intatta la versione corrente di IE. Ciò significa che il controllo WebBrowser continua a utilizzare la versione corrente (che ha senso ed è stata una mossa intelligente da MS, dal momento che IE9 è ancora in fase di sviluppo). Ma nel mio caso (limite) ho bisogno del controllo WebBrowser per usare IE9.

È possibile incorporare IE9 in un'applicazione di moduli .NET?

EDIT

Con Hans Passant's help che sto diventando un po 'più lontano. Qualcosa di molto interessante sta accadendo nella directory dei file prog di IE9. C'è una directory chiamata "iepreview.exe.local" che, una volta rimossa, fa in modo che l'app IE9 Preview utilizzi IE8 (verificata con il test acid3).

Non proprio quello che voglio, ma mi chiedo se si tratta di una sorta di reindirizzamento che potrei sfruttare per le mie esigenze.

EDIT 2

Ho provato applicando l'hack .local sia la mia copia di iexplore.exe e la mia .NET app e ho notato un'altra cosa interessante - entrambe le applicazioni iniziato a utilizzare IE7 invece di IE8 (la mia versione di IE) o IE9.

Potrebbe essere questo iexplore provare a utilizzare IE9 e quindi ricadere su IE7? Sembra strano che sia disponibile anche IE7, ma questa è la stringa useragent che inizia a utilizzare.

risposta

3

L'unico modo in cui IE9 può installare side-by-side è quando utilizza nuovi GUID per le interfacce e le coclasse. Il che significa che non puoi usare WebBrowser, ha i GUID hard-coded.

C'è un'altra opzione, utilizzando il wrapper AxHost. Fare clic con il pulsante destro del mouse sulla casella degli strumenti, scegliere Elementi, selezionare la scheda Componenti COM e individuare IE9 nell'elenco. Non ho idea di come potrebbe essere chiamato, il vecchio nome era "Microsoft Web Browser", servito da c: \ windows \ system32 \ ieframe.dll

Dovrai fare a meno delle classi wrapper WebBrowser e HtmlDocument.

+0

Non ho alcuna registrazione COM nella mia directory di anteprima piattaforma IE. Tutte le DLL sono in una sottodirectory iepreview.exe.local e il mshtml contiene DllRegisterServer. Quindi mi aspetto che possa essere lasciato cadere al suo posto, o anche solo regsvred dove è, ma probabilmente c'è dell'altro. – Rup

+0

Odora di COM reg-free. Questo ha senso, ma rende il tuo compito considerevolmente più difficile. Dovresti copiare tutto nella directory di costruzione del tuo progetto. E crea il tuo manifest. Brrr. –

+0

Ho aggiornato la mia domanda con alcune ulteriori informazioni a riguardo. –

12

In realtà, è possibile modificare il registro per forzare il programma a utilizzare il rendering IE9. Vai a HKEY_LOCAL_MACHINE \ SOFTWARE Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION \ e aggiungere un nuovo valore DWORD denominato il tuo nome del programma (con .exe) e un valore decimale impostato su 9999.


Puoi modificare anche il registro per forzare il programma a utilizzare il rendering GPU IE9. Vai a HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_GPU_RENDERING e aggiungi un nuovo valore DWORD chiamato nome del tuo programma (con.exe) e una esadecimale valore impostato su 1.


Questo funziona solo se hai in realta 'IE9! È necessario scaricare IE9 prima, prima di farlo, oppure non funzionerà. Se si desidera rendere le pagine con IE8 basta cambiare il 9999 al 8888.

Nota: rendering GPU è disponibile solo nella IE9

2

Dopo un sacco di Google-ing ho scoperto che ci sono due diversi set di chiavi per FEATURE_BROWSER_EMULATION per applicazioni a 32 bit e 64 bit. È necessario impostare il tuo nel posto giusto in base alla macchina che stai utilizzando. Inoltre è necessario assicurarsi di installare la versione corretta del browser che si desidera emulare.

32 bit:

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

Value Key: (DWORD) yourapplication.exe 

64 bit:

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

Value Key: (DWORD) yourapplication.exe 

Il valore per impostare questa chiave è (tratto da MSDN qui) come valori decimali:

9999 (0x270F) Inter net Explorer 9. Le pagine Web vengono visualizzate in modalità standard IE9, indipendentemente dalla direttiva! DOCTYPE.

9000 (0x2328) contenente! Internet Explorer 9. pagine web basato su standard direttive DOCTYPE vengono visualizzati in modalità IE9.

8888 (0x22B8) pagine web vengono visualizzati in modalità IE8 standard, indipendentemente dalla direttiva DOCTYPE!.

8000 (0x1F40) pagine web che contengono direttive! DOCTYPE basato su standard vengono visualizzati in modalità IE8.

7000 (0x1B58) pagine web che contengono direttive! DOCTYPE basato su standard vengono visualizzati in modalità IE7 Standards.

Problemi correlati