首页 新闻 会员 周边

如何使用msnpsharp.dll获取联系人信息

0
悬赏园豆:5 [已解决问题] 解决于 2012-03-20 14:28

Messenger messenger = new Messenger();
        if (messenger.Connected)
        {
            messenger.Disconnect();
        }
        messenger.Credentials = new Credentials("***@hotmail.com", "********");
        messenger.Connect();
        if (messenger.Connected)
        {
            foreach (Contact c in messenger.ContactList.All)
            {
               
            }
        }

messenger.count是不为0的,但是到foreach循环时,会自动跳出,这是为什么啊!
希望使用

< >
分享
最佳答案
0

messenger.Connect();是个异步的过程,这里并不会等到连接上再执行下一步。你需要用它提供的回调方法,我给个例子:

void StartMessenger()
{
m_messenger = new Messenger();
m_messenger.Credentials = new Credentials("email","password");
m_messenger.Nameserver.SignedIn += Nameserver_SignedIn;
m_messenger.Connect();
}

// 登录成功之后触发的事件
void Nameserver_SignedIn(object sender, EventArgs e)
{
//你应当在这里去访问联系人信息
}


收获园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-03-15 17:06

还有一点就是,你不要光下载dll文件,建议下载整个源码,里面包含一个完整的WinForm实现的MSN项目,具有很高的参考价值。否则你要自己去理解MSN协议(而且有好几个版本),是非常痛苦的。如果你没有源码就留个邮箱,我发给你。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-15 17:08

cuicanxk@126.com
我是用asp.net开发的,也可以用吗?

璀璨星空o(≧v≦)o~~ | 园豆:109 (初学一级) | 2012-03-16 14:10

@璀璨星空o(≧v≦)o~~: 也可以的。已发。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-16 14:13

这是我改过之后的代码:

但是总跳到Nameserver_AuthenticationError这个方法里,可我的用户名和密码确实是正确的,而且同样的代码在winform里是正确的,而在asp.net里就出问题了,我不明白这是为什么,能帮着解决一下吗?

璀璨星空o(≧v≦)o~~ | 园豆:109 (初学一级) | 2012-03-16 16:10

@璀璨星空o(≧v≦)o~~: 这个原因我也不是很清楚了,很诡异。你试试换成 messenger.Credentials = new Credentials(account, pass);  而不是一个个赋值试试。你可以把源码加到项目里,这样就可以调试 messager.Connect 这个函数里的代码了。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-16 16:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册