创建一个仅提供通过javascript调用的函数的ActiveX控件.最好的方法

Creating an ActiveX-Control that only provides functions to be called via javascript. Best way to do it?

本文关键字:函数 调用 javascript ActiveX 控件 方法 一个 创建      更新时间:2023-10-16

我以前没有创建ActiveX控件的任何经验。关于2008年以前的主题的信息非常稀少,已经过时,而且往往毫无帮助。

我要做的事:
创建一个网站,显示详细的客户端系统信息(比如可用的硬盘空间和确切的CPU等等)。所有这些都必须在不下载/安装任何东西的情况下实现(必须在新安装的XP SP2上运行)。他们认为ActiveX不是下载什么东西,所以这似乎是解决这个问题的唯一方法。我很清楚跨越浏览器/客户端和ActiveX之间的界限是多么愚蠢,但我对此没有发言权。

我的想法:
编写一个不可见的ActiveX控件,该控件提供要由javascript调用的函数并返回字符串。当调用函数时,控件所做的就是通过WMI查找请求的信息,并将其作为字符串返回给javascript,然后javascript将结果写入页面(因此控件不需要影响网页)。

我的实际问题:
实现这一点最简单的方法是什么?我知道C#、Java、C++。C#和Java不起作用,因为它们需要下载/安装(.NET/JVM)。C++通过MFC编写ActiveX控件似乎很令人困惑。我发现了这一点,但对于所有的GUI和gif内容来说,它似乎过于复杂。它并没有展示如何通过javascript公开要使用的函数。有人知道这方面的教程吗?另一种选择是使用VB,但VS2010似乎没有提供创建ActiveX控件的模板。

所以。。在C++或VB中公开javascript使用的函数的最简单方法是什么?

您指出的代码项目链接是创建activex控件的一个很好的例子。记住,即使在c++中,浏览器也会第一次尝试下载并安装ActiveX控件。

您可以创建MFC ActiveX控件并在OnPaint中对代码进行注释。然后你可以在你的idl文件中创建函数,比如

dispinterface _DCSDC_Sample
    {
        properties:
        methods:
            [id(DISPID_ABOUTBOX)] void AboutBox();
            [id(1)] bool SendData([in]BSTR portName,[in] VARIANT* Buffer, LONG dwSize);
    };

以及在派生COleControl的类文件中。然后您可以在您的cpp文件中实现您的函数。