2009-10-22 6 views
1

Avertissement: Je demande au nom d'un client et je n'ai pas été directement témoin de ce problème. Il a une application tierce qui produit des supports de formation, que son application de formation présente dans une application WinForms via le contrôle WebBrowser.Activité de suivi dans un contrôle WebBrowser à partir d'un hôte de formulaire Windows

Les interfaces auxquelles il a pu accéder sur le contrôle WebBrowser, à la surface des choses, n'exposent pas toutes les informations requises par le formulaire hôte pour s'intégrer complètement à l'application Web, qui est un peu plus avancée que HTML de base. Il aimerait par exemple détecter un clic sur un bouton, et des informations sur l'état de l'application Web lorsque ce clic a lieu.

Si plus de choses sont possibles que nous connaissons avec WebBrowser, suggérez quelques zones à explorer. Sinon, existe-t-il une alternative au contrôle WebBrowser? Quelque chose de Mozilla qui peut être martelé dans l'apparence d'un contrôle de forme de fenêtres mais sans être si propriétaire?

Répondre

0

Je n'ai aucune idée de "toutes les informations requises par l'hôte". Je suppose que c'est spécifique au site web. Le site Web doit exposer l'information de manière prévisible, par exemple en donnant aux identifiants des éléments un accès facile.

Vous souhaiterez peut-être reconcevoir le site Web et exposer certaines API via un service Web. L'utilisation d'un navigateur pour l'analyse HTML n'est pas très fiable et évolutive.

+0

@Sheng, le problème est que le contenu «web» est généré par une application tierce, et non conçu manuellement. – ProfK

+0

Ensuite, vous devez étudier le modèle HTML du site Web. Une tâche ennuyeuse. Vous devez prédire toutes les variantes de pages en fonction des autorisations et des paramètres de l'utilisateur, en localisant les informations en utilisant des méthodes d'essai et d'erreur, par exemple en localisant un tableau en comparant le texte interne de la première ligne avec l'expression prédéfinie. structure. –

+0

Il m'a traversé l'esprit d'injecter du code pour les gestionnaires d'événements qui stockent des informations, par ex. Quel lien a été cliqué, puis lu et analysé le Dom, mais cela semble dangereux ou maladroit. – ProfK

2

Si vous utilisez un contrôle IE, vous pouvez faire à peu près tout ce que vous voulez en utilisant la bibliothèque d'objets HTML: msmhtl.dll. Vous pouvez vous connecter au contrôle IE et accéder au DOM, intercepter tous les événements et même intercepter par programmation le code HTML et le modifier à la volée. Mais, c'est un sujet énorme.

Voici un lien vers une application VB démo:

http://www.codeproject.com/KB/vb/kirangoka.aspx?msg=2587205

Google sur mshtml et shdocvw et vous devriez trouver un certain nombre d'exemples intéressants.

Vous pouvez aussi regarder WatiN.

+0

C'est un sujet énorme, et je me suis battu avec moi-même plusieurs fois, mais pour d'autres raisons. Je souhaite que Mozilla publie un contrôle de navigateur ouvert. C'est l'un des rappels les plus persistants du monopole diabolique de Microsoft. – ProfK

Questions connexes