C# COM组件开发之界面窗体

C# COM组件开发,我们这里将讲到的是界面窗体的开发。将从定义接口开始,再讲类的实现以及用Regasm 工具进行注册等等,希望对大家有所帮助。

C# COM组件开发1,定义接口

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

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

 
 
  1. using System;  
  2. using System.Runtime.InteropServices;  
  3. namespace Leading.Mis.NewsMonitor  
  4. ......{  
  5.     /**//**//** <summary> 
  6.     /// 消息监控接口的定义  
  7.     /// </summary> 
  8.     [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]  
  9.     public interface INewsMonitor  
  10.     ......{  
  11.         发送文件时,记录发送者,接收者和发送的文件名发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名  
  12.         /**//**//** <summary> 
  13.         /// 当发送文件时,记录发送者,接收者和发送的文件名  
  14.         /// </summary> 
  15.         /// <param name="strSendID">文件发送者</param> 
  16.         /// <param name="strTargetID">文件接受者</param> 
  17.         /// <param name="strFileName">文件名</param> 
  18.      [DispId(1)]  
  19.         void SendFile(string strSendID,string strTargetID,string strFileName);  
  20.         #endregion  
  21.           
  22.         接收文件时,记录文件接收者,发送者和发送的文件名接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名  
  23.         /**//**//** <summary> 
  24.         /// 接受文件时,记录文件接收者,发送者和发送的文件名  
  25.         /// </summary> 
  26.         /// <param name="strReceiveID">文件接收者</param> 
  27.         /// <param name="strSendID">文件发送者</param> 
  28.         /// <param name="strFileName">文件名</param> 
  29.         [DispId(2)]  
  30.         void RecvFile(string strReceiveID,string strSendID,string strFileName);  
  31.         #endregion  
  32.           
  33.         文件发送成功后,记录发送者,接收者和发送的文件名文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名  
  34.         /**//**//** <summary> 
  35.         /// 文件发送成功后,记录发送者,接收者和发送的文件名  
  36.         /// </summary> 
  37.         /// <param name="strSendID">文件发送者</param> 
  38.         /// <param name="strTargetID">文件接收者</param> 
  39.         /// <param name="strFileName">文件名</param> 
  40.         [DispId(3)]  
  41.         void  FileSendOK(string strSendID,string strTargetID,string strFileName);  
  42.         #endregion  
  43.           
  44.         取消文件发送时,记录发送者,接收者和发送的文件名取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名  
  45.         /**//**//** <summary> 
  46.         /// 取消文件发送时,记录发送者,接收者和发送的文件名  
  47.         /// </summary> 
  48.         /// <param name="strCancelID">取消文件发送者</param> 
  49.         /// <param name="strTargetID">文件发送对方</param> 
  50.         /// <param name="strFileName">文件名</param> 
  51.         [DispId(4)]  
  52.         void FileSendCancel(string strCancelID,string strTargetID,string strFileName);  
  53.         #endregion  
  54.           
  55.     } // end interface INewsMonitor  
  56.       
  57. } //end namespace Leading.Mis.NewsMonitor 

C# COM组件开发2,类的实现

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

 
 
  1. using System;  
  2. using System.IO;  
  3. using System.Runtime.InteropServices;  
  4.  
  5. namespace Leading.Mis.NewsMonitor  
  6. ......{  
  7.     /**//**//**//// <summary>  
  8.     /// 消息监控类的实现  
  9.     /// </summary>  
  10.     [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]  
  11.     [ClassInterface(ClassInterfaceType.None)]  
  12.     public class NewsMonitor : INewsMonitor  
  13.     ......{  
  14.         私有字段#region 私有字段  
  15.           
  16.         private string filePath = string.Empty;  
  17.         private string writeLine = string.Empty;  
  18.           
  19.         #endregion  
  20.  
  21.         私有方法#region 私有方法  
  22.           
  23.         private  void NewsMsg()  
  24.         ......{  
  25.             StreamWriter sw = null;  
  26.             if(File.Exists(filePath))  
  27.             ......{  
  28.                 sw = File.AppendText(filePath);  
  29.             }  
  30.             else 
  31.             ......{  
  32.                 FileStream fs = File.Create(filePath);  
  33.                 sw = new StreamWriter(fs);  
  34.             }  
  35.             sw.WriteLine(writeLine);  
  36.             sw.Close();  
  37.         }  
  38.           
  39.         #endregion  
  40.           
  41.         共有方法#region 共有方法  
  42.           
  43.         发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名  
  44.     /**//// <summary>  
  45.         /// 当发送文件时,记录发送者,接收者和发送的文件名  
  46.     /// </summary>  
  47.         /// <param name="strSendID">文件发送者</param>  
  48.         /// <param name="strTargetID">文件接受者</param>  
  49.         /// <param name="strFileName">文件名</param>  
  50.                public void SendFile(string strSendID,string strTargetID,string strFileName)  
  51.         ......{  
  52.             filePath = @"c:MsgMonitorSendFile.txt";  
  53.             writeLine = strSendID + " 向 " + strTargetID + " 发送 < " + strFileName + " > 文件";  
  54.             NewsMsg();  
  55.         }  
  56.         #endregion  
  57.           
  58.      接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名  
  59.     /**//// <summary>  
  60.         /// 接受文件时,记录文件接收者,发送者和发送的文件名  
  61.     /// </summary>  
  62.         /// <param name="strReceiveID">文件接收者</param>  
  63.         /// <param name="strSendID">文件发送者</param>  
  64.         /// <param name="strFileName">文件名</param>  
  65.                public void RecvFile(string strReceiveID,string strSendID,string strFileName)  
  66.         ......{  
  67.             filePath = @"c:MsgMonitorRecvFile.txt";  
  68.             writeLine = strReceiveID + " 接收到 " + strSendID + " 发送的 < " + strFileName + " > 文件";  
  69.             NewsMsg();   
  70. }  
  71.         #endregion  
  72.           
  73.         文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名  
  74.     /**//// <summary>  
  75.         /// 文件发送成功后,记录发送者,接收者和发送的文件名  
  76.     /// </summary>  
  77.         /// <param name="strSendID">文件发送者</param>  
  78.         /// <param name="strTargetID">文件接收者</param>  
  79.         /// <param name="strFileName">文件名</param>  
  80.                public void  FileSendOK(string strSendID,string strTargetID,string strFileName)  
  81.         ......{  
  82.             filePath = @"c:MsgMonitorFileSendOK.txt";  
  83.             writeLine = strSendID + " 已经成功向 " + strTargetID + " 发送 < " + strFileName + " > 文件";  
  84.             NewsMsg();  
  85.         }  
  86.         #endregion  
  87.           
  88.        取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名  
  89.     /**//// <summary>  
  90.         /// 取消文件发送时,记录发送者,接收者和发送的文件名  
  91.     /// </summary>  
  92.         /// <param name="strCancelID">取消文件发送者</param>  
  93.         /// <param name="strTargetID">文件发送对方</param>  
  94.         /// <param name="strFileName">文件名</param>  
  95.                public void FileSendCancel(string strCancelID,string strTargetID,string strFileName)  
  96.         ......{  
  97.             filePath = @"c:MsgMonitorFileSendCancel.txt";  
  98.             writeLine = strCancelID + " 取消和 " + strTargetID + " 发送 < " + strFileName + " > 文件";  
  99.             NewsMsg();  
  100.         }  
  101.         #endregion  
  102.           
  103.         #endregion   
  104.     } // end class NewsMonitor  
  105.       
  106. //end namespace Leading.Mis.NewsMonitor 

C# COM组件开发3,用 Regasm 工具进行注册

 
 
  1. Regasm NewsMsg.dll / tlb: NewsMsg.tlb 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值