如何在c#中调用activex和dll的javascript函数

时间:2010-02-19 13:19:08

标签: 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(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函数???

1 个答案:

答案 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函数,希望它能帮助某人。