dotMSN 2.0.2 非常好用,还提供源码和使用说明,真是好人啊,可以到这里下载
http://www.xihsolutions.net/dotmsn/
PS:
看到国内某些软件,点大的东西,一点技术含量都没,还收费,还捆绑垃圾!!!
但是,dotMSN 2.0.2 的友好性操作不如,1.2 版的,所以我就对它动点小手术,为这个工程多开几个方便之门。
A:
首先变化最大的是,命名空间,在原来的 “dotMSN” 前面加了个 “XihSolutions.”,这是开发者的名字,流下一个名字是应该的,综观全码,除了注释声明,就这里有他的名字,很干净。
PS:
这里有啰嗦几句了,有些人写发消息类的东西总喜欢在信息后面拖个作者的名字,何必呢。。
如果只是个人用,如果你觉得麻烦,
1,你可以全文搜索,将,“XihSolutions.DotMSN” 替换为 “DotMSN”,记得选在整个项目中替换,搜索隐藏文本。
2,在 dotMSN2 的右键属性中将程序集名称和默认空间名也改了。
PS:
可不要加上自己的名字啊,这是道德问题!!有些人就喜欢搬别人的东西硬说是自己的。
修改这个后,最好不要发布了,最好只是自己用
B:
消息发送函数
只接受 TextMessage 类型的参数,呵呵,没以前的方便了,发个纯字符串信息,还得新建各类型。
所以我们要来重载它
在 SB9MessageHandler.cs 文件中找到上述函数。在它下面建立一个如下的函数
PS:
记得将上面的注释也拷下来,免得提示缺少什么的。下面也相同,都要有说明的。
C:
全局消息初始化函数 private DotMSN.Messenger messenger = new Messenger();
默认是空参数的,可以给他加个有参数的,主要是免去输入默认的
messenger.Credentials.ClientID = "msmsgs@msnmsgr.com";
messenger.Credentials.ClientCode = "Q1P7W2E4J9R8U3S5";
方法如下:
定位到 Messenger.cs 文件,修改如下:
D:
连接函数 .Connect(),没有参数的,加个参数,可以一起设置帐号和密码,改后,就可以这样调用咯
messenger.Connect(accountTextBox.Text, passwordTextBox.Text);
具体修改如下:
E:
限制消息长度,如果发送消息大于 1668字节,就会导致程序崩溃,所以限制文本消息程度为 1024 字节PS:官方的消息限定为 800 字节
PS:
看到国内某些软件,点大的东西,一点技术含量都没,还收费,还捆绑垃圾!!!
但是,dotMSN 2.0.2 的友好性操作不如,1.2 版的,所以我就对它动点小手术,为这个工程多开几个方便之门。
A:
首先变化最大的是,命名空间,在原来的 “dotMSN” 前面加了个 “XihSolutions.”,这是开发者的名字,流下一个名字是应该的,综观全码,除了注释声明,就这里有他的名字,很干净。
PS:
这里有啰嗦几句了,有些人写发消息类的东西总喜欢在信息后面拖个作者的名字,何必呢。。
如果只是个人用,如果你觉得麻烦,
1,你可以全文搜索,将,“XihSolutions.DotMSN” 替换为 “DotMSN”,记得选在整个项目中替换,搜索隐藏文本。
2,在 dotMSN2 的右键属性中将程序集名称和默认空间名也改了。
PS:
可不要加上自己的名字啊,这是道德问题!!有些人就喜欢搬别人的东西硬说是自己的。
修改这个后,最好不要发布了,最好只是自己用
B:
消息发送函数
SendTextMessage(
TextMessage
message)
只接受 TextMessage 类型的参数,呵呵,没以前的方便了,发个纯字符串信息,还得新建各类型。
所以我们要来重载它
在 SB9MessageHandler.cs 文件中找到上述函数。在它下面建立一个如下的函数
public virtual void SendTextMessage(string message)
{
TextMessage Msg = new TextMessage(message);
SendTextMessage(Msg);
}
这样就能直接发送字符串了。
PS:
记得将上面的注释也拷下来,免得提示缺少什么的。下面也相同,都要有说明的。
C:
全局消息初始化函数 private DotMSN.Messenger messenger = new Messenger();
默认是空参数的,可以给他加个有参数的,主要是免去输入默认的
messenger.Credentials.ClientID = "msmsgs@msnmsgr.com";
messenger.Credentials.ClientCode = "Q1P7W2E4J9R8U3S5";
方法如下:
定位到 Messenger.cs 文件,修改如下:
/// <summary>
/// Basic constructor to instantiate a Messenger object.
/// </summary>
///
public Messenger()
{
nsMessageProcessor = Factory.CreateNameserverProcessor();
nsMessageHandler = Factory.CreateNameserverHandler();
p2pHandler = Factory.CreateP2PHandler();
p2pHandler.NSMessageHandler = nsMessageHandler;
// set the events
nsMessageHandler.SBCreated += new SBCreatedEventHandler
(nsMessageHandler_SBCreated);
nsMessageProcessor.ConnectionClosed += new EventHandler
(nsMessageProcessor_ConnectionClosed);
p2pHandler.SessionCreated += new SessionChangedEventHandler
(p2pHandler_SessionCreated);
p2pHandler.SessionClosed += new SessionChangedEventHandler
(p2pHandler_SessionClosed);
Credentials.ClientID = "msmsgs@msnmsgr.com";
Credentials.ClientCode = "Q1P7W2E4J9R8U3S5";
}
/// <summary>
/// Basic constructor to instantiate a Messenger object.
/// </summary>
///
public Messenger(string ClientID, string ClientCode)
{
nsMessageProcessor = Factory.CreateNameserverProcessor();
nsMessageHandler = Factory.CreateNameserverHandler();
p2pHandler = Factory.CreateP2PHandler();
p2pHandler.NSMessageHandler = nsMessageHandler;
// set the events
nsMessageHandler.SBCreated += new SBCreatedEventHandler
(nsMessageHandler_SBCreated);
nsMessageProcessor.ConnectionClosed += new EventHandler
(nsMessageProcessor_ConnectionClosed);
p2pHandler.SessionCreated += new SessionChangedEventHandler
(p2pHandler_SessionCreated);
p2pHandler.SessionClosed += new SessionChangedEventHandler
(p2pHandler_SessionClosed);
Credentials.ClientID = ClientID;
Credentials.ClientCode = ClientCode;
}
D:
连接函数 .Connect(),没有参数的,加个参数,可以一起设置帐号和密码,改后,就可以这样调用咯
messenger.Connect(accountTextBox.Text, passwordTextBox.Text);
具体修改如下:
/// <summary>
/// Connect to the messenger network.
/// </summary>
///
public virtual void Connect()
{
Connect(credentials.Account, credentials.Password);
}
/// <summary>
/// Connect to the messenger network.
/// </summary>
///
public virtual void Connect(string Account, string Password)
{
if (Account.Length != 0 && credentials.Account != Account)
credentials.Account = Account;
if (Password.Length != 0 && credentials.Password != Password)
credentials.Password = Password;
if (nsMessageProcessor == null)
////原来的,没有改变////
}
E:
限制消息长度,如果发送消息大于 1668字节,就会导致程序崩溃,所以限制文本消息程度为 1024 字节PS:官方的消息限定为 800 字节
public TextMessage(string message)
{
if (System.Text.Encoding.Default.GetBytes(message).Length > 1024)
{
//byte[] tmpByte = System.Text.Encoding.Default.GetBytes(message,0,1281);
Text = System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(message), 0, 1024+1);
Text = Text.Remove(Text.Length - 1);
}
else
Text = message;
}
记过以上修改,操作就方便些了。