现在的位置: 首页 > 综合 > 正文

用C#如何获得msn联系人

2013年08月04日 ⁄ 综合 ⁄ 共 7441字 ⁄ 字号 评论关闭

最近接受一项新的有挑战性的工作,那就是获取msn的联系人,并实现msn的操作。

 

 

 private XihSolutions.DotMSN.Messenger messenger = new Messenger();

        protected void Page_Load(object sender, EventArgs e)
        {

            // by default this example will emulate the official microsoft windows messenger client
            messenger.Credentials.ClientID = "msmsgs@msnmsgr.com
";
            messenger.Credentials.ClientCode = "Q1P7W2E4J9R8U3S5";

            // uncomment this to enable verbose output for debugging
            Settings.TraceSwitch.Level = System.Diagnostics.TraceLevel.Verbose;

            // set the events that we will handle
            // remember that the nameserver is the server that sends contact lists, notifies you of contact status changes, etc.
            // a switchboard server handles the individual conversation sessions.
            messenger.NameserverProcessor.ConnectionEstablished += new EventHandler(NameserverProcessor_ConnectionEstablished);
            messenger.Nameserver.SignedIn += new EventHandler(Nameserver_SignedIn);
            messenger.Nameserver.SignedOff += new SignedOffEventHandler(Nameserver_SignedOff);
           
messenger.NameserverProcessor.ConnectingException += new
ProcessorExceptionEventHandler(NameserverProcessor_ConnectingException);
            messenger.Nameserver.ExceptionOccurred += new HandlerExceptionEventHandler(Nameserver_ExceptionOccurred);
            messenger.Nameserver.AuthenticationError += new HandlerExceptionEventHandler(Nameserver_AuthenticationError);
            messenger.Nameserver.ServerErrorReceived += new ErrorReceivedEventHandler(Nameserver_ServerErrorReceived);
            messenger.ConversationCreated += new ConversationCreatedEventHandler(messenger_ConversationCreated);
           
messenger.TransferInvitationReceived += new
MSNSLPInvitationReceivedEventHandler(messenger_TransferInvitationReceived);
        }

        /// <summary>
        /// Asks the user to accept or deny the incoming filetransfer invitation.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void messenger_TransferInvitationReceived(object sender, MSNSLPInvitationEventArgs e)
        {
            //if (MessageBox.Show(
            //    messenger.ContactList[e.TransferProperties.RemoteContact].Name +
            //    " wants to send you a file./r/nFilename: " +
            //    e.Filename + "/r/nLength (bytes): " + e.FileSize,
            //    "Filetransfer invitation",
            //    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            //{
            //    // by setting the Accept property in the EventArgs to true we give the transfer a green light    
            //    saveFileDialog.FileName = e.Filename;
           
//    if ((DialogResult)Invoke(new
ShowFileDialogDelegate(ShowFileDialog), new object[] { saveFileDialog
}) == DialogResult.OK)
            //    {
            //        e.TransferSession.DataStream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write);
            //        e.Accept = true;
            //    }
            //}
        }
        private void messenger_ConversationCreated(object sender, ConversationCreatedEventArgs e)
        {
            // check if the request is initiated remote or by this object
            // if it is initiated remote then we have to create a conversation form. Otherwise the
            // form is already created and we don't need to create another one.
            if (e.Initiator == null)
            {
                // use the invoke method to create the form in the main thread
             //   Control.Invoke(new CreateConversationDelegate(CreateConversationForm), new object[] { e.Conversation });
            }
        }
        /// <summary>
        /// Notifies the user of errors which are send by the MSN server.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Nameserver_ServerErrorReceived(object sender, MSNErrorEventArgs e)
        {
            // when the MSN server sends an error code we want to be notified.
          //  Response.Write(e.MSNError.ToString());
            SetStatus("Server error received");
        }
    
        private void Nameserver_AuthenticationError(object sender, ExceptionEventArgs e)
        {
           // Response.Write("Authentication failed, check your account or password.");
            SetStatus("Authentication failed");
        }
        private void Nameserver_ExceptionOccurred(object sender, ExceptionEventArgs e)
        {
            // ignore the unauthorized exception, since we're handling that error in another method.
            if (e.Exception is UnauthorizedException)
                return;

            //Response.Write(e.Exception.ToString());
        }

        private void NameserverProcessor_ConnectingException(object sender, ExceptionEventArgs e)
        {
           // string message=e.Exception.ToString();
            SetStatus("Connecting failed");
        }

        private void Nameserver_SignedOff(object sender, SignedOffEventArgs e)
        {
            SetStatus("Signed off from the messenger network");
        }
        private void Nameserver_SignedIn(object sender, EventArgs e)
        {
            SetStatus("Signed into the messenger network as " + messenger.Owner.Name);

            // set our presence status
            messenger.Owner.Status = PresenceStatus.Online;

            UpdateContactlist();
        }
        private void NameserverProcessor_ConnectionEstablished(object sender, EventArgs e)
        {
            SetStatus("Connected to server");
        }

        private delegate void UpdateContactlistDelegate();
        /// <summary>
        /// Updates the listview.
        /// </summary>
        private void UpdateContactlist()
        {
            if (messenger.Connected == false)
                return;
         
            //  ListView1.Items.Clear();
            ListBox1.Items.Clear();
            //messenger.ContactList.All.Current
            if (messenger.ContactList.All != null)
            {
                string costring = "";
                foreach (Contact contact in messenger.ContactList.All)
                {

                    ListItem item = new ListItem();
                    item.Text = contact.Name;
                 //   item.Value = contact.ToString();
                    ListBox1.Items.Add(item);
                    costring = costring + contact.Name.Trim();
                }
             Response.Write("<script>alert('"+costring+"');</script>");
                ListBox1.DataBind();

            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            //messenger.Credentials.ClientID = "msmsgs@msnmsgr.com
";
           // messenger.Credentials.ClientCode = "Q1P7W2E4J9R8U3S5";
            if (messenger.Connected)
            {
                messenger.Disconnect();
            }
            messenger.Credentials.Account = txtUserID.Text.Trim();
            messenger.Credentials.Password = txtPassWd.Text.Trim();
          
            // messenger.ConnectivitySettings.ProxyHost = "10.1.180.11";
             //messenger.ConnectivitySettings.ProxyPort =8080;
             //messenger.ConnectivitySettings.ProxyType = ProxyType.Socks5;
           //   messenger.ConnectivitySettings.ProxyUsername = 用户名
               // messenger.ConnectivitySettings.ProxyPassword =密码
             try
             {
                 messenger.Connect();
              //   Response.Write("<script>alert('成功');</script>");
             }
             catch (Exception message)
             {
                 //Response.Write(message);
             }
          
                // ListBox1.AppendDataBoundItems();
            
        }
        private delegate void SetStatusDelegate(string status);

        private void SetStatusSynchronized(string status)
        {
            //Response.Write(status);
        }

        private void SetStatus(string status)
        {
            SetStatusSynchronized(status);
        }

}

 

使用DotMSN可以很好地对msn控件进行操作。实现开心,校内通过msn获取联系人的功能。

抱歉!评论已关闭.