J'essaie de définir un proxy pour uniquement l'instance actuelle d'un WebBrowserControl. La documentation est terrible mais je crois que si j'appelle le InternetSetOption
de wininet.dll
en passant le handle IntPtr au navigateur interne utilisé par le WebBrowserControl en tant que premier paramètre alors la méthode n'affectera que l'instance actuelle (et je peux définir un proxy en utilisant cette méthode http://msdn.microsoft.com/en-us/library/aa385114(v=VS.85).aspx). Toutefois, WebBrowserControl ne fournit aucun moyen d'accéder à ce handle. J'ai passé des heures à googler et chercher SO et il semble que ce serait très utile à un certain nombre de personnes, mais personne n'a encore compris!Récupère le handle AxleWebBrowser2 de WebBrowserControl à utiliser dans InternetSetOption, les problèmes COM avec System .__ ComObject
WebBrowserControl possède une propriété appelée AxIWebBrowser2 qui est l'objet COM pour lequel le handle est nécessaire. L'interface que MS utilise pour cela s'appelle UnsafeNativeMethods.IWebBrowser2
et possède une propriété appelée HWND
dont je pense avoir besoin. Cependant, UnsafeNativeMethods.IWebBrowser2
est marqué internal
. En utilisant la réflexion sur le WebBrowserControl, je peux obtenir la valeur de la propriété privée AxIWebBrowser2
mais le type apparaît comme System.__ComObject
. Je ne peux pas convertir ce System.__ComObject
en IWebBrowser2
parce que c'est interne à l'assemblage Windows.Forms
.
Y at-il un moyen d'accéder à la propriété HWND
de cet objet AxIWebBrowser2
en utilisant C#?
Oui et ça marche. Mais comme vous l'avez dit, c'est sur l'ensemble du processus. Je dois être capable de générer plusieurs threads pour utiliser plusieurs proxys. Une alternative serait d'engendrer plusieurs processus qui utilisent chacun des proxies différents mais j'ai essayé de faire quelque chose de similaire et cela ne semblait pas fonctionner correctement - il semblait que le proxy était défini sur une base globale! – hackerhasid