我有用C#编写的active-x类,它是多线程的。我需要从我的activeX调用javascript。我试过Microsoft.mshtml。
/*JS
function do_Print() {
control.setPage(this);
control.scriptPrint();
}
function report_back(report){
alert("Report:"+report);
}
C#
public void setPage(mshtml.HTMLWindow2Class JSFile) {
window = JSFile;
}
public void scriptPrint(){
window.execScript("report_back('Printing complete!')", "JScript");
}
*/
但它的抛出异常
“无法转换类型的COM对象 接口'mshtml.HTMLWindow2Class' 输入'mshtml.DispHTMLWindow2'“
还有另一种方式。我可以从java脚本调用active-x函数,反之亦然,但仍然有异常。任何想法的多线程c#active-x调用javascript函数???
答案 0 :(得分:1)
你可以像这样访问html
private void MyControl_Load(object sender, EventArgs e)
{
if (this.Site != null)
{
htmldoc = (HtmlDocument)this.Site.GetService(typeof(HtmlDocument));
}
}
然后在任何按钮上单击我们的C#控件调用方法以单击html按钮
HtmlElement setCLIButton = htmldoc.GetElementById("searchButton");
setCLIButton.InvokeMember("onClick");
通过这种方式,您可以调用您的javacsript函数,希望它能帮助某人。