/ / WebBrowser Control dans une application 32 bits Lance Internet Explorer 64 bits sur un appel window.open () - c ++, windows, internet-explorer, winapi, mshtml

Contrôle WebBrowser dans une application 32 bits Lance Internet Explorer 64 bits sur un appel window.open () - c ++, Windows, Internet-Explorer, Winapi, mshtml

J'ai une application 32 bits sous Windows 7 64 bits. L'application (écrite en C ++) héberge un contrôle WebBrowser.

Lorsque le contrôle WebBrowser est invité à créer une fenêtrenouvelle fenêtre (via un appel javascript window.open ()), il lance un nouveau processus Internet Explorer. En particulier, ce nouveau processus IE est un processus IE 64 bits.

Depuis les pages Web aiment Adobe Flash, malheureusementVous devez vous assurer que le nouveau processus IE lancé est la version 32 bits (la valeur par défaut sur ma machine) afin de pouvoir afficher le contenu AdobeFlash.

Il est intéressant de noter que IE lui-même (encapsulant WebBrowser / MSHTML) ne souffre pas de ce problème, ce qui implique qu’il existe une sorte de configuration pouvant être définie sur allusion au contrôle WebBrowser pour lancer un processus 32 bits.

Des idées pour lesquelles je devrais m'assurer que WebBrowser / MSHTML crée le bon processus?

Réponses:

0 pour la réponse № 1

Je vous suggère de gérer l'événement DWebBrowserEvents2 :: NewWindow2. Vous pouvez l'ouvrir dans un contrôle de navigateur Web dans votre propre processus ou dans un nouvel objet CLSID_InternetExplorer.


0 pour la réponse № 2

Cela pourrait être excessif pour votre application, mais pour moi, changer la cible de la plate-forme en x86 empêche l'utilisation d'Internet Explorer 64 bits dans les contrôles ou les fenêtres contextuelles.