I have a c# app and i have tried using some mshtml elements. But i have a problem. The using mshtml;
namespace gives me a error is Visual Studio 2012.
Here is my source code,
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;
}
}
}
}
But i can't use the functions of htmlelement, IHTMLElementCollection . The compiler gives me a error.
Error 1 The type or namespace name 'mshtml' could not be found (are you missing a using directive or an assembly reference?)
Error 5 The type or namespace name 'HTMLDocument' could not be found (are
you missing a using directive or an assembly reference?
Error 2 The type or namespace name 'IHTMLFormElement' could not be found (are you missing a using directive or an assembly reference?)
Error 3 The type or namespace name 'IHTMLElementCollection' could not be found (are you missing a using directive or an assembly reference?)
Error 4 The type or namespace name 'HTMLDocument' could not be found (are you missing a using directive or an assembly reference?)
MSHTML embedded in an application doesn't do this by default. The changes required to get MSHTML to support HTML5 standards are fairly large due to the original design many years ago, a design deeply embedded in the product. We are hoping that a move to EdgeHTML will make HTML5 standards available, but we need to test it first.
We need to replace MSHTML with EdgeHTML in the existing application. And yes, we are aware that EdgeHTML is only supported on Windows 10 and we will need to keep using MSHTML on previous version of Windows. +5. Good comment. Very clear. I'm not sure, but it seems to me that you have to use Windows 10 SDK to be able to use EdgeHTML.
This section contains the reference for MSHTML. The documentation in this section is a partial listing of IWebBrowswer2 interface members. The complete IWebBrowser2 interface is documented in the MSHTML Reference content. This article describes how to connect to a running instance of Internet Explorer through C++ code.
I'm not sure, but it seems to me that you have to use Windows 10 SDK to be able to use EdgeHTML. Just try using the latest version Microsoft Visual Studio 2015 for Windows 10 and Microsoft Edge browser support. You can also download and try Embarcadero RAD Studio 10 Seattle, which fully supports Windows 10 development features.
Right click on References
in your project in Solution Explorer
. Then click Add Reference...
. In Assemblies
type in search 'HTML' and you'll see Microsoft.mshtml
. Add this to your project and you could use HTMLDocument. Good luck
Microsoft.mshtml is in COM tab in Reference Manager and it's named "Microsoft HTML Object Library".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With