2010-02-19 3 views
2

액티브 X 클래스는 C#으로 작성되었으며 멀티 스레드입니다. 내 activeX에서 javascript를 호출해야합니다. 나는 Microsoft.mshtml로 시도했다. C에서 액티브 X 또는 DLL에서 자바 스크립트 함수를 호출하는 방법 #

/*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"); 
    } 
    */ 

하지만 던지는 예외는 " 유형을 인터페이스 유형 'mshtml.HTMLWindow2Class'의 COM 개체를 캐스팅 할 수 없습니다 'mshtml.DispHTMLWindow2'는"

이 다른

방법 라운드. Java 스크립트에서 active-x 함수를 호출 할 수 있지만 그 반대의 경우도 여전히 예외 위에 있습니다. 다중 스레드 C# 액티브 X에 대한 모든 아이디어 자바 스크립트 함수를 호출 ???

답변

1

당신은 당신이 그것을 희망 당신 javacsript의 함수를 호출 할 수있는이 방법으로 HTML 버튼을

HtmlElement setCLIButton = htmldoc.GetElementById("searchButton"); 
       setCLIButton.InvokeMember("onClick"); 

를 클릭하여 우리의 C# 제어 호출 방법에 어떤 버튼 클릭에 다음이

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

      } 


     } 

같은 HTML에 액세스 할 수 있습니다 누군가를 도울 것입니다.

관련 문제