C#.NET com组件的编写
C#.NET com组件的编写
设置工程属性:“生成”-> “为COM Interop注册”。 1
更改AssemblyInfo.cs……设置COM可见 1
建立源码 1
注册COM组件DLL 3
使用HTML中VBS脚本测试 3
提示不能创建 ACTIVEX 控件…… 4
提示找不到路径 4
----作者Attilax , 1466519819@qq.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属性,导致注册里没有这个键值。而查找 不到。
C#.NET com组件的编写相关推荐
- 13-Flutter移动电商实战-ADBanner组件的编写
1.AdBanner组件的编写 我们还是把这部分单独出来,需要说明的是,这个Class你也是可以完全独立成一个dart文件的.代码如下: 广告图片class AdBanner extends Stat ...
- C++ COM组件的编写
COM组件的编写 本文提供一个完全用C++实现的进程内(DLL)COM服务器,不要ATL或MFC提供任何支持.用这种方式编写COM对象可以让你深入地洞察到COM处 理进程内服务器的方法以及COM是如何 ...
- 14-Flutter移动电商实战-ADBanner组件的编写
拨打电话的功能在app里也很常见,比如一般的外卖app都会有这个才做.其实Flutter本身是没给我们提供拨打电话的能力的,那我们如何来拨打电话那? 1.编写店长电话模块 这个小伙伴们一定轻车熟路了, ...
- react项目中的参数解构_重构复杂的React组件:编写高效且可读组件的5个最佳实践...
随着 React.js 的不断进化,现在的它已经成为 Web 组件中最受欢迎的视图库之一.但是你手中的它,是否真的能够正常工作呢?本文将主要描述 5 个关于React 组件的最佳实践,希望对正在关注 ...
- 关于Unity中的帧动画组件的编写
一.帧动画 1: 美术准备好一个连续动作的离散图片; 2: 程序在准确的时间来切换这个图片; 3: 优点: 简单,速度快; 缺点:资源占用相对过大; 二.frame_anim组件编写 1: 代码里面强 ...
- Fit项目分页组件的编写
2019独角兽企业重金招聘Python工程师标准>>> 项目中涉及列表显示的地方都会用到分页控件,为了能更好地与当前网站的样式匹配,这次要自己实现一个. 所以选择了模板中提供的分页样 ...
- 前端学习(2893):导航组件的编写和属性技巧设置
- Vue_案例_初始化显示_采用组件化编写页面_实现组件间通信---vue工作笔记0022
我们来做一个上面的这样的页面,我们已经有了html页面,以及css文件了. 首先我们把原来的src文件夹中的内容,备份一下到 src-base文件夹中去. 然后,我们新建一个src文件夹, 先把原来的 ...
- 组件化 Todo List 编写笔记
前言 在学习 Vue.js 组件化开发 Todo List 的时候,自己虽然也能编码实现,但如果不做笔记,只是写代码,学习的效果还不够好.只有把自己的实现思路记录下来,遇到的问题和解决方法也记录下来, ...
- VC6.0和VS2005:C++和C#编写调用COM组件
这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用C#编写和调用COM组件,以及在VC6.0和VS2005之间互相调用COM组件. AD: 前一 ...
最新文章
- zabbix自动发现规则实现批量监控主机的TCP监听端口
- jQuery Ajax详解
- HTTP协议的头信息详解
- redis 基本类型和命令(一)
- Zookeeper02_zk集群搭建
- Association, Composition and Aggregation in UI5, CRM, S/4HANA and C4C
- 线程同步以及yield()、wait()、Notify()、Notifyall()
- android java thread_Android中断并重启一个Thread线程的简单方法
- tomcat安全认证
- cmake 检查文件更新_2020年6月:Visual Studio对Linux开发平台的更新
- java list 命名空间,Spring JAVA 不同类加载器命名空间的理解
- 浅谈Java中的栈和堆
- RedHat下通过Rdesktop连接window远程桌面
- 2018美赛B题翻译
- Vivado2017.4软件安装
- Android 退出登录实现
- 微软word 2019取消交叉引用
- SAP 系统销售流程成本和收入的确认
- autojs遍历当前页面所有控件_移动端控件(一)-弹窗(Alert/Dialog)
- 农夫山泉背后的男人“有点狠”
热门文章
- JavaScript 隐性类型转换步骤浅析
- VMThread占CPU高基本上是JVM在频繁GC导致,原因基本上是冰法下短时间内创建了大量对象堆积造成频繁GC。...
- NetScaler的cookieinsert和sourceip联合保持机制
- 能被搜索引擎收录的Blog才是好Blog
- android studio: 让项目通过阿里云 maven jcenter 下载依赖资源
- Item 27: 明白什么时候选择重载,什么时候选择universal引用
- python 字典的函数
- Atmospheric Scattering in Unity5
- 使用 T4 文本模板生成设计时代码
- jquery easyui