首页 > 开发 > 综合 > 正文

c#开发Com组件

2024-07-21 02:26:40
字体:
来源:转载
供稿:网友

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

 



上一篇:C#中的字符串截取

下一篇:C#中定义热键

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表