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
新闻热点
疑难解答