Bien que je n'ai aucune expérience de l'écriture, je crois que vous devez écrire un asynchronous pluggable protocol, comme recommandé dans .
Détails de comment et pourquoi le faire sont dispersés dans le web en divers endroits, mais la meilleure exposition que je l'ai lu est en this post par Igor Tandetnik (abrégé ici par souci de concision):
Il y a plusieurs couches technologiques prenant en charge le téléchargement et la navigation dans Internet Explorer et le contrôle WebBrowser . En haut, est WebBrowser lui-même et l'objet MSHTML qui fournit l'analyse HTML et le rendu . Le client utilise ces interfaces comme IWebBrowser2 et IHTMLDocument2 pour communiquer avec ces objets de haut niveau. WebBrowser et MSHTML utilisent la bibliothèque URL Monikers pour effectuer des téléchargements réels. URLMon expose ses services via interfaces IMoniker et IBinding, et le client (disons MSHTML) implémente IBindStatusCallback et un certain nombre d'interfaces associées , par ex. IHttpNégotiate ou IAuthenticate.
Ensuite, il y a un gestionnaire de protocole Asynchronous Pluggable . Un APP encapsule les détails d'un protocole particulier, comme http, file ou res.
...
La plupart du temps, une demande d'hébergement un contrôle WebBrowser (ou un BHO en cours d'exécution dans IE) utilise haut niveau services fournis par des objets WebBrowser et MSHTML . Cependant, parfois, ces services sont insuffisants et un crochet de niveau inférieur est requis.
...
Ce serait bien de pouvoir accrocher dans la séquence de communication entre WebBrowser/MSHTML et URL sobriquets. Malheureusement, il ne semble pas y avoir de moyen de le faire - au moins, aucun que je sache. Donc, nous regarder le niveau suivant - une communication entre un surnom URL et une application.
...
Maintenant, il est rarement nécessaire de mettre en œuvre une APP à part entière de zéro - après tout, à quelle fréquence les nouveaux protocoles définis se fait?Mais pour nos besoins, il est utile de mettre en oeuvre une application dite passthrough APP (pAPP). A Papp est un objet qui met en œuvre les deux côtés de l'URL communication moniker-à-APP, qui est, elle met en œuvre à la fois et IInternetProtocol IInternetProtocolSink/ IInternetBindInfo. Nous l'enregistrons en tant que gestionnaire temporaire pour un protocole standard , tel que HTTP. Maintenant, chaque fois qu'une requête HTTP doit être envoyée, l'URL moniker va créer une instance de notre pAPP et lui demander de faire le travail. Le pAPP crée alors une instance d'un APP standard pour le protocole question (je l'appelle une cible APP, ou Tapp, mais sachez que je l'ai inventé la terminologie moi-même, ce n'est pas largement acceptées, suggestions pour un meilleure convention de nommage sont les bienvenus) et agit comme son client. À ce stade, notre pAPP devient un man-in-the-middle. Dans le cas le plus simple , tout appel de méthode effectué par l'URL Moniker sur pAPP est transmis à tAPP, et tout appel de méthode effectué par tAPP sur pAPP est renvoyé à URL Moniker. Le pAPP peut observer et, si souhaité, modifier chaque bit de information pertinente à cette demande en passant par le surnom et le tAPP.
Merci beaucoup! Il semble que je doive utiliser ce PassthruApp comme modèle et n'utiliser pas mon code C pur actuel. Je ne peux pas implémenter dans C la logique de la hiérarchie de classe implémentée dans PassthruApp. – C0x