2012-09-30 84 views
0

我有一個MFC的ActiveX從本地機器運行良好,但當我試圖使用時,它是在服務器上(局域網)我得到的異常,對象沒有方法AboutBox(for例)。 這是我如何調用方法: document.all('Ctrl1')。AboutBox(); AboutBox方法來自於activeX的Ctrl類。他有這種方法。雖然我注意到idl文件中有一些奇怪的東西:方法AboutBox沒有在控件中聲明,但在其他地方 - idl文件在下面,請指教。 012h謝謝,Nahum。activeX公開的方法

這是IDL:

[ uuid(E0D6BB50-57F3-4C0D-9163-CCC0AEC87EF4), version(1.0), 
    control ] 
library nsip_ax_10Lib 
{ 
     importlib(STDOLE_TLB); 

    // Primary dispatch interface for Cnsip_ax_10Ctrl 
     [ 
      uuid(16C6DE45-B481-4795-AFBA-BE64E1CEF9AA) 
     ] 
     dispinterface _Dnsip_ax_10 
     { 
     properties: 
      methods: 

       [id(DISPID_ABOUTBOX)] void AboutBox(); 
       [id(1)] BYTE try2(void); 
     }; 

     // Event dispatch interface for Cnsip_ax_10Ctrl 

     [ 
     uuid(871F4F0A-3333-4FDF-A53F-CFB581D15596) 
     ] 
     dispinterface _Dnsip_ax_10Events 
     { 
      properties: 
       // Event interface has no properties 

      methods: 
    }; 

     // Class information for Cnsip_ax_10Ctrl 
     [ 
      uuid(E228C560-FA68-48E6-850F-B1167515C920) 
     ] 
    coclass nsip_ax_10 
      { 
      [default] dispinterface _Dnsip_ax_10; 
      [default, source] dispinterface _Dnsip_ax_10Events; 
      }; 

      }; 

加載該ActiveX HTML代碼:

<OBJECT CLASSID="CLSID:871F4F0A-3333-4FDF-A53F-CFB581D15596" 
     CODEBASE="nsip.CAB#version=1,0,0,1" 
     ID="Ctrl1" 
     name="Ctrl1"></OBJECT> 
+0

IDL是正常的,並不能解釋爲什麼你的代碼失敗。確保您沒有註冊的舊版本的DLL。 –

+0

10xs漢斯,activeX自始至終都有AboutBox的方法。 – user1709555

回答

0
  1. 您使用的是您的對象標記的類ID是不正確的:

CLASSID = 「CLSID:871F4F0A-3333-4FDF-A53F-CFB581D15596

ActiveX控件類ID是最後一個在IDL文件即

CLASSID="CLSID:E228C560-FA68-48E6-850F-B1167515C920" 
  • 我從代碼構想的是,你的應用程序不是 指向對象標記中CAB文件的完整服務器路徑。

    CODEBASE="nsip.CAB" 
    

    給出ActiveX控制檯的完整路徑。