2

我已经创建了用于创建 ActiveX 控件的 MS Visual Studio 项目。为此,我执行了此处提到的步骤。我创建了一个名为 HelloWorld.cs 的类文件,并创建了一个返回“Hello World..”的方法。我执行的步骤是.. Created New Project -> New Class-> Sign the Project using HelloWorld.snk 文件。在类文件中,我添加了“ProgId”、“Guid”、“ComVisible”来实现我的逻辑。这是我的代码,即 HelloWorld.cs。

using System;
using System.Runtime.InteropServices;

namespace ActiveXClass
{
    /// <summary>
    /// Demo`enter code here` HelloWorld class
    /// </summary>
    [ProgId("ActiveXClass.HelloWorld")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [Guid("415D09B9-3C9F-43F4-BB5C-C056263EF270")]
    [ComVisible(true)]
    public class HelloWord
    {
        [ComVisible(true)]
        public String SayHello()
        {
            return "Hello World!";
        }
    }
  }

我还在 AssemblyInfo.cs 文件中设置了 [assembly: ComVisible(true)]。然后我创建了一个示例 HTML 页面,它将创建 ActiveX 类的对象,然后调用 SayHello() 方法。然后我按照以下步骤为上述项​​目创建了 msi。新建项目->其他项目类型->安装和部署->Visual Studio安装程序->安装项目名为Setup1。接下来我通过以下命令注册了我的 ActiveX 项目。

regasm /codebase "FULLPATH OF MY ACTIVEX DLL"

来自 cmd 的响应是:“类型注册成功。” 然后我在文件系统中创建了示例 HTML 页面,例如“D:\ActiveX\Test.html”。下面是我的示例 HTML 代码。注意:我还没有创建 .cab 文件。

<!DOCTYPE>
   <html>
   <head>
          <title>ActiveX webpage</title>
   </head>
   <body>

    <OBJECT id="ACtive" classid="clsid:415D09B9-3C9F-43F4-BB5C-C056263EF270">
    </OBJECT>  

    <script type="text/javascript">
        try {
            var obj = document.ACtive;
            if (obj) {
                alert(obj.SayHello());
            } else {
                alert("Object is not created!");
            }
        } catch (ex) {
            alert("Some error happens, error message is: " + ex.Description);
        }

    </script>

我已通过文件系统(例如 D:\ActiveX\Test.HTML)运行此页面,它会成功弹出消息“Hello World..”。但是当我在IIS 服务器上添加这个 HTML 文件并浏览它时,它会返回消息“发生一些错误,错误消息是:未定义”。那么这里出了什么问题..?我还为此创建了 C# 网页。但结果是一样的。IIS 端或 IE 端是否有任何配置问题。我已经尝试了很多,但都失败了。当我像这样在 localhost 上运行该网页时,还有一件事localhost:8080/Test.html会运行,但是当我用 IP 地址替换它时,它会失败。例如, http://192.168.1.xx:8080/Test.html 请让我摆脱这种状态。我对 ActiveX 组件非常陌生。期待解决方案。

任何想法将不胜感激。请帮忙。提前致谢。

4

2 回答 2

2

首先在要运行 activex 的 pc 中注册您的 dll,

以管理员模式运行cmd,

类型 cd C:\Windows\Microsoft.Net\Framework\<version of your application>

例如,如果您使用的是 .net 4 然后C:\Windows\Microsoft.Net\Framework\v4.0.30319输入,然后输入regasm <path of your dll>

例:C:\Windows\Microsoft.Net\Framework\v4.0.30319> regasm d:\myfile.dll输入。您将收到以 . 结尾的消息type registered successfully。如果不是,请检查您的应用程序的版本

然后检查您的 IE 安全性。转到 Internet Explorer,工具 -> Internet 选项-> 单击高级选项卡 -> 在安全下检查前三个选项。然后得到安全选项卡单击受信任的站点,单击“站点”按钮,然后将您的网址添加到受信任的站点列表(http://192.168.10.xx/ *)然后转到自定义级别并找到 Activex 控件和插件并检查启用除“仅允许已批准的域在没有提示的情况下使用 ActiveX”之外的所有内容然后重新启动 IE

于 2014-01-02T05:16:54.437 回答
0

尝试在 IIS 服务器上安装 ActiveX 组件。

还要检查您的 Internet 区域和安全设置,特别是您可以尝试将有问题的站点添加到您的受信任站点区域。

于 2013-07-30T13:16:55.617 回答