我已经创建了用于创建 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 组件非常陌生。期待解决方案。
任何想法将不胜感激。请帮忙。提前致谢。