où est IHTMLScriptElement?
J'ai juste commencé à l'aide de Visual Studio 2010, C# IDE aujourd'hui.
Je suis en train d'injecter du code javascript pour composant WebBrowser et suivi de la réponse de stackoverflow:
Comment injecter du code Javascript dans le contrôle WebBrowser?
HtmlElement txtBox = webBrowser1.Document.GetElementById("UserEmailShortcut");
//js
HtmlElement scriptOne = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptOne.DomElement;
element.text = "function sayHello() { alert('hello') }";
txtBox.AppendChild(scriptOne);
webBrowser1.Document.InvokeScript("sayHello");
Maintenant il est trait ondulé rouge sous IHTMLScriptElement disant:
Error 1 The type or namespace name 'IHTMLScriptElement'
could not be found (are you missing a using directive or an assembly reference?)
C:\Users\m-tak\documents\visual studio
2010\Projects\winformWithWebBrowserTest\winformWithWebBrowserTest\Form1.cs
25 13 winformWithWebBrowserTest
J'ai regardé la documentation
http://msdn.microsoft.com/en-us/library/aa768904(v=VS.85).aspx
mais je ne peux pas comprendre pourquoi. N'est-ce pas déjà inclus et ont juste besoin d'inclure comme "using IHTMLScriptElement
" (qui n'a pas de travail..)
Vous devez vous connecter pour publier un commentaire.
Projet + Ajouter une Référence, sélectionnez Microsoft.mshtml. Si elle n'apparaît pas dans la liste (PIA) puis utilisez l'onglet Parcourir et sélectionnez c:\windows\system32\mshtml.tlb
Ajouter une aide de la directive en haut du fichier de code source:
Méfiez-vous que vous disposez d'un déploiement de détail. Si le PIA n'est pas installé sur la machine cible, ce qui n'est pas rare, alors la meilleure chose à faire est de définir la propriété Copie Locale de l'assemblée de référence pour Vrai. Qui crée l'Microsoft.mshtml.dll fichier dans le dossier de création. Le copier, le long de avec votre EXE sur la machine cible. Il ya quelques cas où une ÉFVP est requise, pas celui-ci.
Mise à jour de cet ancien relais de poste, .NET 4+ et VS2010+ appuient désormais les "Incorporer les Types Interop" ensemble de référence de la propriété. Aussi connu comme le "Pas de PIA" caractéristique. Cette obsoletes la nécessité pour les Éfvp et est le meilleur moyen de traiter avec les assemblys interop. Elle est définie à True automatiquement, à moins que votre projet a commencé sur une ancienne version de VS.
Il n'a pas de bas-côtés, vous n'avez plus à déployer l'assembly interop et l'interopérabilité des types que vous utilisez sont maintenant intégrées dans votre fichier exécutable. Juste ceux que vous utilisez. Un petit changement peut être nécessaire dans votre code, si vous créez à présent l'objet COM avec
new XxxxClass()
alors vous devez supprimer la "Classe" du nom.IHTMLScriptElement est définie dans le Mshtml. Vous devez ajouter une référence à la Bibliothèque d'Objets Microsoft HTML, puis ajouter un "à l'aide de mshtml" pour VS pour résoudre IHTMLScriptElement.
Je recommande ce réponse pour un gérés seule solution pour l'injection de code javascript qui ne nécessite pas le déploiement d'un PIA comme mshtml n'.
Il est dans Mshtml.dll.
La
System.Windows.Forms.HtmlElement
'sDomElement
de la propriété est de type objet, mais en fait un COM pointeur IUnknown de l'élément, que vous pouvez lancer à l'un des élément HTML interfaces, telles quemshtml.IHTMLScriptElement
.