C# 做ActiveX控件问题
创建ActiveX控件:
1、 新建项目“Windows控件库”,从项目中删除UserControl1.cs,新建“用户控件”项并指定名称。
2、 打开项目属性,在“生成”标签页中选中“为COM Interop注册”。
3、 打开Properties中的AssenblyInfo.cs,修改[assembly: ComVisible(false)],将false改为true,否则编译会出现“不包含可为COM Interop注册(注销)的任何类型”警告。
4、 编译。
创建网页:
1、 新建ASP.NET网站,选择“位置”时单击“浏览”,选择本地IIS,“创建新的Web应用程序”,打开并确定。
2、 在Default.aspx的适当位置加入
<object classid="http:TestActiveX.dll#TestActiveX.Picture" width="640px" height="480px"></object>
其中classid的格式为“http:组件名#命名空间.类”。
3、 生成网站。
4、 将组件复制到网站相应目录中。
首先创建DLL库,代码如下:
using System;
using System.Runtime.InteropServices;
namespace ANamespace
{
// 定义COM组件的接口
public interface ASignatures
{
string FName();
string SName();
int Age { get;}
}
// 表明此类会被公开为一个COM组件的接口
[ClassInterface(ClassInterfaceType.AutoDual)]
public class AClass :ASignatures
{
// 具体实现接口的方法
public string FName()
{
return "Imran";
}
public string SName()
{
return "Nathani";
}
public int Age
{
get { return 24; }
}
}
}
将上面的代码保存为AClass.cs,然后编译: csc /t:library AClass.cs
将得到一个AClass.dll,然后注册:regasm AClass.dll /tlb /codebase
最后创建一个HTML测试网页,内容如下:
<html>
<head>
<script language="javascript">
<!-- Load the ActiveX object -->
var x = new ActiveXObject("ANamespace.AClass");
<!-- Access the Method -->
alert(x.FName());
alert(x.SName());
<!-- Access the Property -->
alert(x.Age);
</script>
</head>
<body>
</body>
</html>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!