将 JavaScript 字符串传递给 ActiveX 控件时出错

发布于 2025-01-08 11:50:36 字数 409 浏览 1 评论 0原文

我正在编写一个嵌入 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)

在调用该方法时,它给我一个“类型不匹配”错误。

感谢您的帮助。

I'm writing an ActiveX control to embed inside an Internet Explorer page, and I'm having trouble passing a string to an ActiveX method from inside JavaScript.

I am using MFC activex control and my function looks like this

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

void CloseCon(CHAR* a,LONG b);

On the JavaScript side, I call the method like this:

CSDS_Communication1.CloseCon("1",3)

while calling the method it gives me a "Type Mismatch" error.

Thank you for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一身骄傲 2025-01-15 11:50:36

虽然我不太使用 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);

Although I'm not using MFC much (strongly prefer ATL), I pretty convinced you can't communicate char* from JavaScript, and have to use BSTR. That is: use BSTR instead of char*, and VTS_WBSTR instead of VTS_Pl1. In your code, please try

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

void CloseCon(BSTR a, LONG b);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文