windev champ html version ieSi vous développez en windev en faisant appel au champ HTML, en .net ou tout autre technologie s'appuyant sur le contrôle WebBrowser alors vous avez certainement déjà fait face à une situation très frustrante: le moteur de rendu par défaut est ancien (IE7) quelque soit la version d'internet explorer installée. Cela peut rapidement devenir un casse tête pour les développeurs devant hacker le code des pages web uniquement pour IE mais c'est également très dommageables pour les utilisateurs qui ne profitent pas des nouvelles technologies implémentées dans les versions récentes d'internet explorer. Heureusement il existe une solution "assez" simple pour palier ce problème.

Avec un peu de recherche on se rend compte que la documentation microsoft nous renseigne sur la possibilité de forcer une version du moteur de rendu pour le champ html ou le contrôle WebBrowser http://msdn.microsoft.com/en-us/library/ee330730%28v=vs.85%29.aspx#browser_emulation. Il faut renseigner une clef de registre "DWORD" dont le nom est celui de l'executable "MONEXE.exe" et la valeur celle du moteur de rendu devant être utilisé:

HKEY_LOCAL_MACHINE(HKEY_CURRENT_USER)\SOFTWARE\Microsoft\ Internet Explorer\Main\FeatureControl\ FEATURE_BROWSER_EMULATION\

Pour les applications 32bits sur les machines 64bits:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

Exemple:
webbrowser control version

Remarquez que cette clef peut être renseignée dans la configuration machine ou dans la configuration utilisateur. Si vous écrivez dans HKEY_LOCAL_MACHINE il faudra alors bénéficier de droits administrateur (peut être lors du déploiement de l'application) ou alors le mécanisme d'UAC risque de s'enclencher il me semble alors opportun d'écrire cette configuration dans l'espace utilisateur. Aussi il faut que cela soit fait avant l'initialisation du champ/contrôle qui scanne cette valeur lors de son initialisation.

Enfin autre point important non documenté, vous pouvez forcer automatiquement la version la plus récente du moteur de rendu disponible en renseignant la valeur de la clef à 0. Cela est particulièrement utile pour les développeurs produisant des pages web standard n'ayant aucune crainte de régression.

Je vous propose donc pour windev le code suivant à placer dans le code d'initialisation de votre projet qui écrira la bonne clef de registre à chaque démarrage de l'application:

Citation :

SI PAS RegistreExiste("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION") ALORS
   RegistreCréeClé("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION")
FIN

RegistreEcrit("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", fExtraitChemin(ExeInfo(exeNom), fFichier + fExtension),"0",RegistreTypeEntier)

Ce code fonctionne également dans le code d'initialisation du projet d'un composant, donc aucun problème pour embarquer le champ html dans un composant.

En espérant que ce billet aura été utile, n'hésitez pas à le partager.
Partager sur:
A propos de l'auteur:
Guillaume Jeantet: titulaire d'une licence pro et fort de quelques années d'expériences je suis administrateur système et développeur mais surtout un autodidacte dynamique et passionné. Je partage sur UBDT mes coups de coeurs et astuces.

Autres articles qui pourraient vous intéresser.

free mobile 18001800 MHz pour Free Mobile le déploiement commence.
15Mhz duplex seront restitués à Free Mobile sur la bande de 1800 mhz lui permettant d'améliorer sa couverture réseau et proposer la 4g+.
zemmour beziersLa minute Zemmour lolilol
Zemmour et le couple Balkany nous balancent leur dose de lol pour la soirée. A lire pour vous détendre un bon coup.
securite nfc paiementDoit-on faire confiance aux paiement sans contact NFC
Doit-on vraiment faire confiance au paiement sans contact. Renaud Lifchitz nous prouve que les cartes bancaires NFC ne sont pas du tout sécurisées.
reveil cafeUn reveil qui fait le café: le Barisieur
Avis aux amateurs de café le Barisieur est un réveil digital qui vous prépare le café. Un réveil en douceur au son des cliquetis des billes de métal et l'odeur du café fraîchement moulu. Un moment de détente qui stimule les sens: l'ouïe, l'odorat et goût.
politiciens corrompusUn ado lutte contre la corruption des politiciens
Aux états unis un plug-in permet aux citoyens de connaître par qui ont financer les politiques et ainsi détecter les conflits d'intérêts et ceux étant corrompus.
#1 Le par Charly
Merci pour l'astuce
#2 Le par Guy
Avec la sortie de windows 10 et de Edge par rapport &u point ci-dessous

Enfin autre point important non documenté, vous pouvez forcer automatiquement la version la plus récente du moteur de rendu disponible en renseignant la valeur de la clef à 0. Cela est particulièrement utile pour les développeurs produisant des pages web standard n'ayant aucune crainte de régression.

il ne faut plus mettre la clef à 0 pour un programme qui s'exécute sous windows 10 car sinon il émule Edge qui ne supporte pas les activex et du coup Webrowser ne fonctionne plus
Il suffit donc de tester la version de windows
pas sur windows10 on mettra toujours la clef à zéro
avec windows 10 on mettra la clé à 11000 qui permet d'émuler IE 11 (et non Edge) et qui est toujours installé avec windows 10 !
#3 Le par Guillaume
Merci pour ces précisions Guy.

Je n'ai pas encore eu le temps de me pencher sur windows 10 (bien que j'ai l'update sur certains de mes postes). Je suis heureux d'entendre que le webbrowser control supporte edge c'est une grand avancée car microsoft n'avait pas communiqué officiellement sur ce sujet

Je publierai un nouvel article pour traiter ce cas dès que j'aurai le temps de procéder à tests plus complets.
#4 Le par Michelp
Superbe astuce! Merci!
#5 Le par 1pek
super merci, très bien expliqué.
Pourquoi Windev ne documente pas cette contrainte !?

Proposer un nouveau commentaire

Votre pseudo s'il vous plaît :

Email (Facultatif, n'est pas affiché et permet de recevoir des notifications de validation / réponses):

Votre site Web (facultatif) :

Exprimez vous :

:arrow::D:confused::cool::cry::eek::evil::!::idea:lol:mad::|:?::p:redface::rolleyes::(:):wink: