c#开发Com组件

1,定义接口

(1)在接口上方加上[Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]

(2)在每个方法上加上[DispId(i)]
 

using System;
using System.Runtime.InteropServices;
namespace Leading.Mis.NewsMonitor
......{
    /**//**//**//// <summary>
    /// 消息监控接口的定义
    /// </summary>
    [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]
    public interface INewsMonitor
    ......{
        发送文件时,记录发送者,接收者和发送的文件名发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名
        /**//**//**//// <summary>
        /// 当发送文件时,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接受者</param>
        /// <param name="strFileName">文件名</param>
     [DispId(1)]
        void SendFile(string strSendID,string strTargetID,string strFileName);
        #endregion
       
        接收文件时,记录文件接收者,发送者和发送的文件名接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名
        /**//**//**//// <summary>
        /// 接受文件时,记录文件接收者,发送者和发送的文件名
        /// </summary>
        /// <param name="strReceiveID">文件接收者</param>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strFileName">文件名</param>
        [DispId(2)]
        void RecvFile(string strReceiveID,string strSendID,string strFileName);
        #endregion
       
        文件发送成功后,记录发送者,接收者和发送的文件名文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名
        /**//**//**//// <summary>
        /// 文件发送成功后,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接收者</param>
        /// <param name="strFileName">文件名</param>
        [DispId(3)]
        void  FileSendOK(string strSendID,string strTargetID,string strFileName);
        #endregion
       
        取消文件发送时,记录发送者,接收者和发送的文件名取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名
        /**//**//**//// <summary>
        /// 取消文件发送时,记录发送者,接收者和发送的文件名
        /// </summary>
        /// <param name="strCancelID">取消文件发送者</param>
        /// <param name="strTargetID">文件发送对方</param>
        /// <param name="strFileName">文件名</param>
        [DispId(4)]
        void FileSendCancel(string strCancelID,string strTargetID,string strFileName);
        #endregion
       
    } // end interface INewsMonitor
   
} //end namespace Leading.Mis.NewsMonitor
 

2,类的实现

(1)在类的上方加上 [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]
                      [ClassInterface(ClassInterfaceType.None)]

using System;
using System.IO;
using System.Runtime.InteropServices;

namespace Leading.Mis.NewsMonitor
......{
    /**//**//**//// <summary>
    /// 消息监控类的实现
    /// </summary>
    [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]
    [ClassInterface(ClassInterfaceType.None)]
    public class NewsMonitor : INewsMonitor
    ......{
        私有字段#region 私有字段
       
        private string filePath = string.Empty;
        private string writeLine = string.Empty;
       
        #endregion

        私有方法#region 私有方法
       
        private  void NewsMsg()
        ......{
            StreamWriter sw = null;
            if(File.Exists(filePath))
            ......{
                sw = File.AppendText(filePath);
            }
            else
            ......{
                FileStream fs = File.Create(filePath);
                sw = new StreamWriter(fs);
            }
            sw.WriteLine(writeLine);
            sw.Close();
        }
       
        #endregion
       
        共有方法#region 共有方法
       
        发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名
    /**//// <summary>
        /// 当发送文件时,记录发送者,接收者和发送的文件名
    /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接受者</param>
        /// <param name="strFileName">文件名</param>
               public void SendFile(string strSendID,string strTargetID,string strFileName)
        ......{
            filePath = @"c:MsgMonitorSendFile.txt";
            writeLine = strSendID + " 向 " + strTargetID + " 发送 < " + strFileName + " > 文件";
            NewsMsg();
        }
        #endregion
       
     接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名
    /**//// <summary>
        /// 接受文件时,记录文件接收者,发送者和发送的文件名
    /// </summary>
        /// <param name="strReceiveID">文件接收者</param>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strFileName">文件名</param>
               public void RecvFile(string strReceiveID,string strSendID,string strFileName)
        ......{
            filePath = @"c:MsgMonitorRecvFile.txt";
            writeLine = strReceiveID + " 接收到 " + strSendID + " 发送的 < " + strFileName + " > 文件";
            NewsMsg();
        }
        #endregion
       
        文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名
    /**//// <summary>
        /// 文件发送成功后,记录发送者,接收者和发送的文件名
    /// </summary>
        /// <param name="strSendID">文件发送者</param>
        /// <param name="strTargetID">文件接收者</param>
        /// <param name="strFileName">文件名</param>
               public void  FileSendOK(string strSendID,string strTargetID,string strFileName)
        ......{
            filePath = @"c:MsgMonitorFileSendOK.txt";
            writeLine = strSendID + " 已经成功向 " + strTargetID + " 发送 < " + strFileName + " > 文件";
            NewsMsg();
        }
        #endregion
       
       取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名
    /**//// <summary>
        /// 取消文件发送时,记录发送者,接收者和发送的文件名
    /// </summary>
        /// <param name="strCancelID">取消文件发送者</param>
        /// <param name="strTargetID">文件发送对方</param>
        /// <param name="strFileName">文件名</param>
               public void FileSendCancel(string strCancelID,string strTargetID,string strFileName)
        ......{
            filePath = @"c:MsgMonitorFileSendCancel.txt";
            writeLine = strCancelID + " 取消和 " + strTargetID + " 发送 < " + strFileName + " > 文件";
            NewsMsg();
        }
        #endregion
       
        #endregion
    } // end class NewsMonitor
   
} //end namespace Leading.Mis.NewsMonitor

3,用 Regasm 工具进行注册

Regasm NewsMsg.dll / tlb: NewsMsg.tlb

 

时间: 2024-10-04 14:50:12

c#开发Com组件的相关文章

使用Spring Framework设计和开发SCA组件,第2部分

使用Spring Framework设计和开发SCA组件,第2部分 - 使用Apache Tuscany的高级技巧 简介 本系列的 使用 Spring Framework 设计和开发 SCA 组件,第 1 部分:三剑客:Spring.SCA 和 Apache Tuscany 概述了综合使用 SCA 和 Spring 的益处.您了解了如何作为一种 SCA 服务公开 Spring bean 以及如何 在 Spring 应用程序内访问 SCA 服务和属性. 本文将探讨 Apache Tuscany 运

使用Spring Framework设计和开发SCA组件,第1部分

使用Spring Framework设计和开发SCA组件,第1部分 - 三剑客:Spring.SCA和Apache Tuscany 在 "使用 Spring Framework 设计和开发 SCA 组件" 系列文章 中,学习如何有效结合服务组件架构(Service Component Architecture,SCA )与 Spring Framework 来创建分布式服务应用程序.第一篇文章将概述 SCA 与 Spring 两者相结合的优势.学习如何使用 Spring Framewo

想学习动态链接库开发和组件开发,希望能给推荐几本好书,英文版也可以

问题描述 想学习动态链接库开发和组件开发,希望能给推荐几本好书,英文版也可以 想学习动态链接库开发和组件开发,希望能给推荐几本好书,英文版也可以

控件开发和组件开发有什么区别?

问题描述 RT好像很多地方都说差不多可是VS2005中为什么添加的时候有服务器控件还有组件选项?如果不一样,哪个简单,是控件开发简单吗?请回答的尽量详细,谢谢! 解决方案 解决方案二:我们所说的控件一般是指按钮文本框图表控件等等组件是一个更广泛的概念,其可以包含可视化的控件,也包含不可视的后台服务.组件就是一个独立的执行单位,其一般通过接口方法被调用,实现高内聚,松耦合解决方案三:想问下<庖丁解牛>这本书说说的组件/控件,目录里写的又都是控件,那这本书里的是都是组件和控件,还是什么?解决方案四

Android 开发音频组件(Vitamio FAQ)详细介绍_Android

 一.Vitamio介绍   1.1 Vitamio是什么?    Vitamio是Android平台视音频播放组件,支持播放几乎格式的视频以及主流网络视频流(http/rtsp/mms等),详细的中文介绍: 这里.    Vitamio官网:http://vitamio.org/    Vitamio微博:http://weibo.com/vitamio     VPlayer官网:http://vplayer.net    Vitamio豆瓣:http://site.douban.com/1

Android开发四大组件Activity/Service/Broadcast Receiver/Content Provider详解

Android开发的四大组件一.Activity详解二.Service详解三.Broadcast Receiver详解四.Content Provider详解外加一个重要组件 intent的详解. 一.Activity详解 Activty的生命周期的也就是它所在进程的生命周期. 一个Activity的启动顺序: onCreate()-->onStart()-->onResume() 当另一个Activity启动时:第一个Activity onPause()-->第二个Activity  

Python 开发Activex组件方法_python

使用win32com模块开发window ActiveX的示例:(如果你还没有装win32com模块的话,请到http://python.net/crew/skippy/win32/Downloads.html下载). 复制代码 代码如下: # SimpleCOMServer.py class PythonUtilities: _public_methods_ = ['SplitString'] _reg_progid_ = "Python.Utilities" _reg_clsid_

Android 开发音频组件(Vitamio FAQ)详细介绍

一.Vitamio介绍 1.1 Vitamio是什么? Vitamio是Android平台视音频播放组件,支持播放几乎格式的视频以及主流网络视频流(http/rtsp/mms等),详细的中文介绍: 这里. Vitamio官网:http://vitamio.org/ Vitamio微博:http://weibo.com/vitamio VPlayer官网:http://vplayer.net Vitamio豆瓣:http://site.douban.com/145815/ 1.2 关于Vitami

.net下开发COM+组件

一.问题的提出:(下面举出我遇到的问题)1.最终用户的每次请求,都将读取Mapping文件--可以通过缓存解决:2.xxx子系统需要不断的写入Mapping文件--也可以先写入内存然后批量写入文件解决: 二.分析解决问题:由于分别有2个或更多子系统需要对同一文件进行读写操作,而客户端又有很大的并发性,所以极可能出现读写冲突或错误,也必将影响系统的性能.通过调用共同的进程外组件的方式来读写文件:而这个共同的进程外组件只有在自身启动的时候把文件内容load到内存,当文件有变化时更新内存. 三.COM

Android开发四大组件之实现电话拦截和电话录音_Android

一.问题描述 使用BordercastReceiver和Service组件实现下述功能: 1.当手机处于来电状态,启动监听服务,对来电进行监听录音. 2.设置电话黑名单,当来电是黑名单电话,则直接挂断. 当拨打电话或电话状态发生改变时,系统就会发出有序广播,因此我们可以使用BordercastReceiver接受广播,因BordercastReceiver执行时间短不能执行耗时任务也不能使用子线程,因此我们应启动一个Service来监听电话并进行处理 二.加入AIDL文件 Android没有对外