2009-03-16 8 views
0

J'ai un navigateur Internet Explorer intégré dans une application Windows Forms et je n'ai pas la possibilité de modifier le code source de ce formulaire. Cependant, j'ai obtenu un handle à la fenêtre IE et peut effectuer diverses fonctions SendInput. Si je clique sur un contrôle, comment puis-je savoir s'il s'agit d'un TextBox, puis comment envoyer des caractères à ce TextBox?Obtention d'un contrôle sur les contrôles dans les pages Web Internet Explorer

J'ai besoin de réponses qui utilisent un handle de la fenêtre IE que j'ai déjà obtenu pour mes autres fonctionnalités. La réponse dont j'ai besoin doit impliquer un handle de la fenêtre IE.

Répondre

0

Vous ne pouvez pas. Les contrôles sur IExplore ne sont plus des contrôles Windows - ce sont des entités personnalisées rendues par IExplore qui ressemblent simplement à des contrôles Windows réels. La seule façon d'interagir avec les contrôles sur une page Web est d'accéder au contrôle activeX de Windows Internet Explorer, de le demander pour IID_IWebBrowser2, et à partir de là de parcourir l'espace de noms du modèle d'objet de document. Si vous n'avez pas la possibilité de modifier le code source de ce formulaire, cela veut dire que votre code fonctionne dans un processus entièrement différent, alors vous avez un très gros problème. Si vous êtes dans le même processus il ya une bonne chance que WinForms ait une API que vous pouvez utiliser pour contraindre l'accès à n'importe quel ActiveX contrôle son hébergement. Compte tenu de votre choix de langage sous-optimal pour ce type de dev-C#, je ne peux donner aucun conseil sur la façon dont l'interopérabilité avec les contrôles activex sera facile ou possible.

0

http://watin.org/ vous donne beaucoup de possibilités pour accéder aux navigateurs Web - ne sais pas si cela inclut ceux qui sont intégrés dans d'autres applications. Dans les deux cas, vous pouvez obtenir plus d'informations sur la façon d'automatiser une fenêtre de navigateur.