【问题标题】:Error in Passing a JavaScript string to an ActiveX Control将 JavaScript 字符串传递给 ActiveX 控件时出错
【发布时间】:2012-03-12 12:35:44
【问题描述】:

我正在编写一个嵌入到 Internet Explorer 页面中的 ActiveX 控件,但在将字符串从 JavaScript 内部传递给 ActiveX 方法时遇到问题。

我正在使用 MFC activex 控件,我的功能看起来像这样

DISP_FUNCTION_ID(CCSDS_CommunicationCtrl, "CloseCon", eventidCloseCon, CloseCon, VT_EMPTY,VTS_PI1 VTS_I4)

void CloseCon(CHAR* a,LONG b);

在 JavaScript 方面,我这样调用方法:

CSDS_Communication1.CloseCon("1",3)

调用该方法时出现“类型不匹配”错误。

感谢您的帮助。

【问题讨论】:

    标签: mfc activex atl


    【解决方案1】:

    虽然我使用 MFC 的次数不多(我更喜欢 ATL),但我非常确信您无法通过 JavaScript 与 char* 通信,而必须使用 BSTR。即:用BSTR代替char*,用VTS_WBSTR代替VTS_Pl1。在您的代码中,请尝试

    DISP_FUNCTION_ID(CCSDS_CommunicationCtrl, "CloseCon", eventidCloseCon, CloseCon, VT_EMPTY, VTS_WBSTR VTS_I4)
    
    void CloseCon(BSTR a, LONG b);
    

    【讨论】:

    • 我也试过了 CloseCon(VARIANT* a, LONG b) 和 DISP_FUNCTION_ID(CCSDS_CommunicationCtrl, "CloseCon", eventidConfigCon, CloseCon, VT_BOOL, VTS_VARIANT VTS_I4) 也很有效
    猜你喜欢
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多