Utiliser mshtml ne fonctionne pas
J'ai une application en c# et j'ai essayé d'utiliser certains mshtml éléments. Mais j'ai un problème. Le using mshtml;
espace de noms me donne une erreur de Visual Studio 2012.
Voici mon code source,
namespace Tagger
{
using mshtml;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Text;
public class HTMLForm
{
private string _action = "";
private string _method = "";
public Hashtable Inputs = new Hashtable();
public HTMLForm(IHTMLFormElement element)
{
this._method = element.method;
this._action = element.action;
foreach (IHTMLInputElement element2 in (IHTMLElementCollection) element.tags("input"))
{
try
{
string name = element2.name;
string str2 = element2.value;
if (name == null)
{
name = element2.type;
}
this.Inputs.Add(name, str2);
}
catch
{
}
}
}
public static HTMLForm[] GetAllForms(string html)
{
List<HTMLForm> list = new List<HTMLForm>();
HTMLDocument document = (HTMLDocument) Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("25336920-03F9-11CF-8FD0-00AA00686F13")));
document.write(new object[] { html });
document.close();
foreach (IHTMLFormElement element in document.forms)
{
list.Add(new HTMLForm(element));
}
return list.ToArray();
}
public static HTMLForm GetFormByAction(string html, string action)
{
foreach (HTMLForm form in GetAllForms(html))
{
if (form.Action.ToLower() == action.ToLower())
{
return form;
}
}
return null;
}
public string ToPostData()
{
StringBuilder builder = new StringBuilder();
foreach (string str in this.Inputs.Keys)
{
object obj2 = this.Inputs[str];
string str2 = (obj2 == null) ? "" : obj2.ToString();
builder.AppendFormat("{0}={1}&", HTTPBase.encode(str), HTTPBase.encode(str2));
}
if (builder.Length > 1)
{
return builder.ToString().Substring(0, builder.Length - 1);
}
return "";
}
public string Action
{
get
{
return this._action;
}
set
{
this._action = value;
}
}
public string Method
{
get
{
return this._method;
}
set
{
this._method = value;
}
}
}
}
Mais je ne peux pas utiliser les fonctions de htmlelement, IHTMLElementCollection . Le compilateur me donne une erreur.
Erreur 1 le type ou Le nom d'espace de noms 'mshtml' n'a pas pu être trouvée (sont
vous manque une directive using ou une référence d'assembly?)Error 5 The type or namespace name 'HTMLDocument' could not be found (are
vous manque une directive using ou une référence d'assembly?
Erreur 2 le type ou Le nom d'espace de noms 'IHTMLFormElement' n'a pas pu être trouvée (êtes-vous
manque une directive using ou une référence d'assembly?)Erreur 3 le type ou Le nom d'espace de noms 'IHTMLElementCollection' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?)
Erreur 4 le type ou Le nom d'espace de noms 'HTMLDocument' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?)
source d'informationauteur kks21199
Vous devez vous connecter pour publier un commentaire.
Clic droit sur
References
dans votre projet enSolution Explorer
. Puis cliquez surAdd Reference...
. DansAssemblies
type de recherche 'HTML' et vous verrezMicrosoft.mshtml
. Ajoutez ceci à votre projet et vous pourriez utiliser HTMLDocument. Bonne chanceMicrosoft.mshtml est dans l'onglet COM dans le Gestionnaire de Référence et il est nommé "Microsoft HTML Object Library".