Bonjour :)
voila, c'est un bout de code qui doit a peu près marcher, c'est mal écrit mais ca montre les bases de l'utilisation de DOt MSN de Xih SOlutions afin de programmer votre propre msn.
NOte importante: je suis pas sur qu'il marche direct, ca fé longtemps que je l'ai pas touché et j'ai la flemme, je le dépose à la demande de chépluki :)
Voila, si ya qqun qui est interressé à reprogrammer ca correctement et mettre à jour cette source, c avec plaisir :)
Pour plus d'infos:
http://www.xihsolutions.net/dotmsn/documentation.html
Source / Exemple :
'*******************************************************************************
'CLASSE POUR GERER LES CONVERSATIONS
'*******************************************************************************
Public Class cls_conversations
'collection des conversations
Public t_conversation As New Hashtable
Public Sub add_conversation(ByVal e_contact As DotMSN.Contact, ByRef e_conversation As DotMSN.Conversation)
Debug.WriteLine("Création de l'objet cls_conversation avec " & e_contact.Name)
Dim obj As New cls_conversation(e_contact, e_conversation)
Try
Me.t_conversation.Add(e_contact.Mail, obj)
Catch ex As Exception
Debug.WriteLine("Création déja existante avec " & e_contact.Name)
End Try
End Sub
End Class
'*******************************************************************************
'CLASSE CONVERSATION
'*******************************************************************************
Public Class cls_conversation
Public ReadOnly t_ligne As New SortedList
Public ReadOnly conversation As DotMSN.Conversation
Public Sub New(ByVal e_contact As DotMSN.Contact, ByVal e_conversation As DotMSN.Conversation)
Me.conversation = e_conversation
Me.add_ligne("", "Conversation commencée avec " & e_contact.Name)
End Sub
Public Sub add_ligne(ByVal e_contact_name As String, ByVal e_txt As String)
Me.t_ligne.Add(Me.t_ligne.Count, e_contact_name & " >> " & e_txt)
End Sub
Public Function get_all_dialog() As String
Dim i As Integer
For i = 0 To Me.t_ligne.Count - 1
get_all_dialog &= Me.t_ligne(i).ToString & vbCrLf
Next
End Function
End Class
Public Class uc_msn
Private messenger As DotMSN.Messenger
'login & password pour msn
Private login As String
Private password As String
Private t_conversation As New Hashtable
Private current_conversation As String 'mail de la personne avec qui on est en train de parler
'*********************************************************************************
'fin
Public Sub finish() Implements i_uc_multimedia.finish
If Not IsNothing(Me.messenger) Then
messenger.CloseConnection()
messenger = Nothing
End If
End Sub
'####################################################################################
'####################################################################################
'HANDLER POUR DOTMSN.MESSENGER
'####################################################################################
'####################################################################################
'*********************************************************************************
'déclenché qd on est synchronisé, on se met en online
Private Sub handler_synchronisation_completed(ByVal sender As DotMSN.Messenger, ByVal e As System.EventArgs)
Debug.WriteLine("Synchronisation terminées")
Me.messenger.SetStatus(DotMSN.MSNStatus.Online)
End Sub
'*********************************************************************************
'ajoute un contact qd celui ci se connecte
Private Sub handler_contact_online(ByVal sender As DotMSN.Messenger, ByVal e As DotMSN.ContactEventArgs)
Debug.WriteLine(e.Contact.Mail & " s'est connecté. Statut: " & e.Contact.Status)
If e.Contact.Status <> DotMSN.MSNStatus.Offline Then
'on vérifie si il est pas déja présent dans la liste
'un chgt de status d'un contact relance une connexion
If Me.contact_already_list(e.Contact.Mail) Then
Exit Sub
End If
'ajout dans la liste des contacts
Dim elt As New ListViewItem("")
elt.SubItems.Add(e.Contact.Name)
elt.Tag = e.Contact
'définit l'image
Select Case e.Contact.Status
Case DotMSN.MSNStatus.Online
elt.ImageIndex = 0
Case Else
elt.ImageIndex = 1
End Select
Me.lstv_contact.Items.Add(elt)
End If
End Sub
'*********************************************************************************
'supprime un contact qd il se deconnect
Private Sub handler_contact_offline(ByVal sender As DotMSN.Messenger, ByVal e As DotMSN.ContactEventArgs)
Debug.WriteLine(e.Contact.Mail & " s'est déconnecté")
Dim elt As ListViewItem
For Each elt In Me.lstv_contact.Items
If CType(elt.Tag, DotMSN.Contact).Mail = e.Contact.Mail Then
elt.Remove()
End If
Next
End Sub
'*********************************************************************************
'conversation créée
Private Sub handler_conversation_created(ByVal sender As DotMSN.Messenger, ByVal e As DotMSN.ConversationEventArgs)
'cree les handlers pour les events de la conversation
AddHandler e.Conversation.ContactJoin, AddressOf Me.handler_conversation_contact_joined
AddHandler e.Conversation.ConnectionEstablished, AddressOf Me.handler_conversation_connection_established
AddHandler e.Conversation.UserTyping, AddressOf Me.handler_conversation_user_type_text
AddHandler e.Conversation.MessageReceived, AddressOf Me.handler_conversation_message_received
AddHandler e.Conversation.AllContactsLeft, AddressOf Me.handler_converation_closed
Debug.WriteLine("handler Nouvelle conversation")
End Sub
'*********************************************************************************
'conversation: contact join
Private Sub handler_conversation_contact_joined(ByVal sender As DotMSN.Conversation, ByVal e As DotMSN.ContactEventArgs)
Debug.WriteLine("handler contact join conversation")
Me.create_conversation(e.Contact, sender)
End Sub
Private Sub handler_converation_closed(ByVal sender As DotMSN.Conversation, ByVal e As System.EventArgs)
Debug.WriteLine("Conversation fermée avec ??")
End Sub
Private Sub handler_list_received(ByVal sender As DotMSN.Messenger, ByVal e As DotMSN.ListReceivedEventArgs)
Debug.WriteLine("Liste recue: " & e.AffectedList.ToString)
End Sub
'*********************************************************************************
'conversation: connection établie
Private Sub handler_conversation_connection_established(ByVal sender As DotMSN.Conversation, ByVal e As System.EventArgs)
End Sub
'*********************************************************************************
'conversation: user tape du texte
Private Sub handler_conversation_user_type_text(ByVal sender As DotMSN.Conversation, ByVal e As DotMSN.ContactEventArgs)
End Sub
'*********************************************************************************
'conversation: réception d'un message
Private Sub handler_conversation_message_received(ByVal sender As DotMSN.Conversation, ByVal e As DotMSN.MessageEventArgs)
'ajout du texte dans la conversation
If Me.t_conversation.ContainsKey(e.Sender.Mail) Then
Me.t_conversation.Item(e.Sender.Mail) = Me.t_conversation.Item(e.Sender.Mail) & vbCrLf & e.Sender.Name & ": " & e.Message.Text
Else
Me.t_conversation.Add(e.Sender.Mail, e.Message.Text)
End If
'si c l'user aen cours, on actualise
If Me.current_conversation = e.Sender.Mail Then
Me.show_current_conversation()
Else 'sinon, on met son login en vert
Dim elt As ListViewItem
For Each elt In Me.lstv_contact.Items
If CType(elt.Tag, DotMSN.Contact).Mail = e.Sender.Mail Then
elt.ForeColor = Color.Green
Exit For
End If
Next
End If
Debug.WriteLine(e.Sender.Name & " dit '" & e.Message.Text & "'")
End Sub
'*********************************************************************************
'dbl click sur un user (lance ou affiche conversation)
Private Sub lstv_contact_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstv_contact.DoubleClick, lstv_contact.evt_do_action
Dim contact As DotMSN.Contact = CType(Me.lstv_contact.SelectedItems(0).Tag, DotMSN.Contact)
Me.create_conversation(contact, Me.messenger.RequestConversation(contact.Mail))
'met en rouge la conversation courante
Dim elt As ListViewItem
For Each elt In Me.lstv_contact.Items
elt.ForeColor = Color.White
Next
Me.lstv_contact.SelectedItems(0).ForeColor = Color.Red
Me.current_conversation = contact.Mail
'affiche la conversation
Me.show_current_conversation()
Me.txt_msg.Focus()
End Sub
'*********************************************************************************
'envoi un message
Private Sub txt_msg_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_msg.KeyPress
If Asc(e.KeyChar) = 13 Then
Me.validate_msg()
e.Handled = True
End If
End Sub
Private Sub validate_msg()
'parcourt les conversations pour tomber sur la bonne & lance le msg
Dim c As DotMSN.Conversation
Dim u As DictionaryEntry
Dim envoye As Boolean = False
For Each c In Me.messenger.Conversations
For Each u In c.Users
If CType(u.Value, DotMSN.Contact).Mail = Me.current_conversation Then
c.SendMessage(Me.txt_msg.Text)
Me.t_conversation.Item(CType(u.Value, DotMSN.Contact).Mail) = Me.t_conversation.Item(CType(u.Value, DotMSN.Contact).Mail) & vbCrLf & "Moi: " & Me.txt_msg.Text
envoye = True
End If
Next
Next
Me.show_current_conversation()
Me.txt_msg.Text = ""
End Sub
'####################################################################################
'####################################################################################
'METHODES POUR GERER LES CONVERSATIONS
'####################################################################################
'####################################################################################
'*********************************************************************************
'ajoute la conversation dans t_conversation
Private Sub create_conversation(ByVal e_contact As DotMSN.Contact, ByRef e_conv As DotMSN.Conversation)
Try
Me.t_conversation.Add(e_contact.Mail, "Conversation commencée avec " & e_contact.Mail)
Catch ex As Exception
End Try
'Me.conversations.add_conversation(e_contact, e_conv)
End Sub
'*********************************************************************************
'affiche la conversation courante
Private Sub show_current_conversation()
Me.rtb_discussion.Text = Me.t_conversation.Item(Me.current_conversation)
End Sub
'*********************************************************************************
'spécifie si un contact est déja dans la liste
Private Function contact_already_list(ByVal e_mail As String) As Boolean
Dim elt As ListViewItem
For Each elt In Me.lstv_contact.Items
If CType(elt.Tag, DotMSN.Contact).Mail = e_mail Then
Return True
End If
Next
Return False
End Function
'*************************************************************************************************
'pour ajouter qqchise dans une conversation (juste mettre a jour le hashtable avec le contenu de toutes les conversations
Private Function conv_say(ByVal e_mail As String, ByVal e_narrator As String, ByVal e_msg As String) As Boolean
'on vérifie si la conversation existe
End Function
'*************************************************************************************************
'retourne le mail de l'interlocuteur dans une conversation
Private Function get_mail_from_conv(ByRef e_conv As DotMSN.Conversation) As String
Dim u As DictionaryEntry
For Each u In e_conv.Users
Return CType(u.Value, DotMSN.Contact).Mail
Next
End Function
'*************************************************************************************************
'affiche les parametres
Public Sub show_parameters() Implements i_uc_multimedia.show_parameters
Dim frm_param As New frm_parameters(Me.pref)
frm_param.ShowDialog()
frm_param.Dispose()
End Sub
'*************************************************************************************************
'se connecter
Private Sub lbl_info_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbl_info.Click, lbl_info.evt_do_action
Try
'cree objet msn
Me.messenger = New DotMSN.Messenger
'ajout des handlers
AddHandler messenger.SynchronizationCompleted, AddressOf Me.handler_synchronisation_completed
AddHandler messenger.ContactOnline, AddressOf Me.handler_contact_online
AddHandler messenger.ContactOffline, AddressOf Me.handler_contact_offline
AddHandler messenger.ConversationCreated, AddressOf Me.handler_conversation_created
AddHandler messenger.ListReceived, AddressOf Me.handler_list_received
'connexion
Try
Me.messenger.Connect(Me.pref.get_param("login"), Me.pref.get_param("password"))
Catch ex As Exception
'Me.speak("Impossible de se connecter à msn")
Me.lbl_info.Text = "Impossible de se connecter à msn"
Exit Sub
End Try
Me.messenger.SynchronizeList()
Catch ex As Exception
'Me.speak("Impossible de se connecter à msn")
Me.lbl_info.Text = "Impossible de se connecter à msn"
Exit Sub
End Try
Me.lbl_info.Text = "Connecté en tant que " & Me.messenger.Owner.Mail
'Me.speak("Vous êtes connecté à msn")
End Sub
End Class
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.