2010-09-29 12 views
4

Lorsque j'ai demandé this question j'ai accepté la réponse parce que c'était logique et la documentation pointait était bonne.TWebBrowser et IE version

Test d'une machine avec IE6 contre un autre avec IE7 avec le même exécutable compilé utilisant TWebBrowser le comportement était en effet aussi pointé dans la réponse.

Maintenant, je remets la réponse dans le doute, dans une machine avec IE8 que le même exécutable est identifié comme IE7 par le serveur. J'ai écrit une application simple rails qui pirnts l'agent utilisateur et il est clair. Dans la même machine si j'accéder à ce rails app dans IE il imprime:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729) 

Lorsque je avoir accès à l'aide de ce fichier exécutable:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729) 

De plus, avec un peu d'aide de mon ami Process Monitor je me suis aperçu que le classid appelé pour instancier le TWebBrowser est {8856F961-340A-11D0-A96B-00C04FD705A2} qui dans le registre de Windows a le nom "Microsoft Web Browser" et pointe vers ieframe.dll.

Maintenant les choses deviennent un peu plus étranges. Si je vais à system32/ieframe.dll et vérifie la version ... 8.0.

Je suis vraiment confus. La question est: Quand j'utilise TWebBrowser, quelle version de ie sera utilisée, en effet?

Merci.

Répondre

7

Il utilise IE8, mais en mode de compatibilité IE7. The IE team blogged about this en Mars 2009, où ils ont également décrit comment vous pouvez obtenir le rendu IE8 au lieu de l'IE7 par défaut. Je n'ai rien vu sur le comportement d'IE9 ici, donc je ne peux pas dire si vous aurez besoin d'une valeur différente pour utiliser le rendu IE9, ou s'il y a une autre valeur qui signifie simplement "le plus récent" et obtient IE8 rendu aussi bien.

+1

IE9 utilise de nouvelles constantes (9000 et 9999) avec des significations semblables aux constantes IE8 (8000 et 8888) – EricLaw

+0

@EricLaw: Par curiosité, savez-vous si l'une de ces valeurs peut être utilisée pour signifier "plus récent"? IE, IE8 rendu si l'utilisateur a IE8 et IE9 rendu si l'utilisateur a IE9? –

+0

Excellente question; J'ai demandé aux propriétaires l'autre jour et je n'ai pas entendu. Shoot me mail (ericlaw @ microsoft) et je m'assurerai de revenir vers vous (et ici!). – EricLaw

0

Peut-être que TWebBrowser enregistre l'agent utilisateur qu'il avait au moment de la création dans la propriété ControlData? Essayez de supprimer et de rajouter le contrôle au formulaire sur un ordinateur avec IE8.0 installé. En tout état de cause, ces chaînes d'agent utilisateur semblent étrangement similaires. C'est probablement le même moteur IE8.0, peu importe ce qu'il imprime.