C#.NET com组件的编写

简介:

环境:VS2010...WIN7系统
设置工程属性:“生成”-> “为COM Interop注册”。
当然也可以为每个接口设置COM可见性,ComVisibleAttribute类提供了这样的控制。
更改AssemblyInfo.cs……设置COM可见

// 将? ComVisible 设Θ?置?为a false 使?此?程ì序ò集ˉ中D的?类え?型í
// 对? COM 组哩?件t不?可é见?。£如?果?需è要癮从洙?COM 访?问ê此?程ì序ò集ˉ中D的?类え?型í,?
// 则ò将?该?类え?型í上?的? ComVisible 特?性?设Θ?置?为a true。£
[assembly: ComVisible(true)]

建立源码

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace MyLib
{
    [ComVisible(true)]
    [Guid("2CBD3D76-35F1-4f9d-9C1B-9DBFEE412F77")]
    public interface IMyClass
    {
        void Initialize();
        void Dispose();
        String VC(String path);
    }

    [ComVisible(true)]
    [Guid("EA2F140A-108F-47ae-BBD5-83EEE646CC0e")]
    [ProgId("MyLib.MyClassa")]
    public class MyClass : IMyClass
    {
        public void Initialize()
        {
            //nothing todo
        }
        public void Dispose()
        {
            //nothing todo
        }
        public String VC(String path)
        {
           //  x + y;
            if (path.Trim().Equals(""))
            {

                return "no pathx";
            }

            fastvcAtiLib.fastvcyjmC2k c = new fastvcAtiLib.fastvcyjmC2k();
            //   c.novc = true;   //4 test .only show pic .not show vercode text
            // c.oriImg = true;   //img not process and get vercode... cant echo show img pic ..
            c.vg = 1;
            c.sid = "c2n";
          
            string VerifyCode;
            try
            {
                VerifyCode = c.RecByte(path);
            }
            catch (Exception ex)
            {
                VerifyCode = ex.Message;
            }
            return VerifyCode;
        }
    }
}
注册COM组件DLL
regasm   ClassLibrary1.dll /codebase

如果你的DLL不 是强签名的,则必须要使用/codebase参数

反注册使用
regasm  /u ClassLibrary1.dll

使用HTML中VBS脚本测试 

<script language="VBScript">
Dim o : Set o=CreateObject("MyLib.MyClass")  
  o.Initialize
    MsgBox "1 + 2 = " & o.vc("c:\dx.jpg")
    o.Dispose
    Set o=Nothing
</script>
提示不能创建 ACTIVEX 控件……

原因:是因为注册没有注册上……

提示找不到路径

说明已经注册上了。可能DLL不是强签名的,而又没有指定/CODEBASE属性,导致注册里没有这个键值。而查找不到。


本文转自 宁金峰 51CTO博客,原文链接:http://blog.51cto.com/13243523/2044647,如需转载请自行联系原作者

相关文章
|
5月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
167 0
|
9月前
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
244 18
|
9月前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
241 12
|
9月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
119 6
|
9月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
110 6
|
9月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
116 6
|
9月前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
473 5
|
9月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
370 13
|
10月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
10月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。