Bonjour,

Je veut utiliser un contrôle WinForm personnalisé (WebKit.NET) pour analyser la structure HTML de pages Web. Je sais que je me sert d'un contrôle graphique pour faire du traitement mais j'ai pas trouvé mieux pour me servir du moteur WebKit en .NET.

J'ai réussi à m'en servir comme je voulais en créant avec Visual Studio une fenêtre WinForm contenant le contrôle, mais mon bricolage atroce nécessite que le formulaire soit créé par le thread principal de l'application (l'interface) pour que le contrôle fonctionne, et que l'appel à la fonction de "traitement" se fasse via un thread séparé car il y a un EventWaitHandle qui attend que la page soit chargée, or si c'est le thread principal qui se met en pause, le contrôle ne s'exécute plus et la page ne se chargera jamais.

Pour arranger un peu les choses, j'essaye d'encapsuler cette usine à gaz dans un objet (j'ai besoin de plusieurs instances). J'ai vu sur le net comment créer un thread qui gère une interface graphique (facile, il suffit d'appeler "Application.Run", vive .NET ), je crée donc via le code un thread et un Form qui contient mon contrôle. Mais étrangement, le contrôle ne fonctionne pas, alors qu'il n'y a aucun souci si je le remplace par un TexBox.

Et si j'affecte la propriété du Form "WindowState = FormWindowState.Minimized", afficher la fenêtre provoque un InvalidCastException :
Impossible d'effectuer un cast d'un objet COM de type 'WebKit.Interop.WebViewClass' en type d'interface 'WebKit.Interop.IWebView'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{174BBEFD-058E-49C7-91DF-6F110AA4AC28}' a échoué en raison de l'erreur suivante : Erreur lors du chargement de la bibliothèque/DLL du type. (Exception de HRESULT : 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).
Je ne connais rien aux composants COM, mais ça à l'air d'un problème de chargement de DLL.

Je sais que mon contrôle utilise pleins de DLL appartenant à WebKit, mais pourquoi mon WinForm normal charge mon contrôle spécial sans aucun souci, alors que le thread de ma classe plante ? Et surtout, comment corriger cela ?