C# 如何在c中从activex或dll调用java脚本函数#

C# 如何在c中从activex或dll调用java脚本函数#,c#,javascript,activex,C#,Javascript,Activex,我有一个用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

我有一个用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函数的想法?

您可以像这样访问html

private void MyControl_Load(object sender, EventArgs e)
        {
            if (this.Site != null)
            {
                htmldoc = (HtmlDocument)this.Site.GetService(typeof(HtmlDocument));

            }


        }
然后在任何按钮上单击我们的C#control invoke方法以单击html按钮

 HtmlElement setCLIButton = htmldoc.GetElementById("searchButton");
                setCLIButton.InvokeMember("onClick");
通过这种方式,您可以调用JavaCScript函数,希望它能帮助其他人