Net Send, Aide

Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005 - 25 mai 2005 à 20:01
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005 - 1 juin 2005 à 14:14
bonour, j'ai presque fini mon prog, reste 1 chose, le status
je suis pas capable de le faire fonctionner, mais j'ai quand meme préparé les variables (derniere fonction du code) je veux simplement savoir où exactement je dois appeler la fonction et comment le marquer dans le code, j'ai fait un label juste pour cela


Option Explicit


Private Declare Function NetMessageBufferSend Lib "NETAPI32.DLL" (yServer As Any, yToName As Byte, yFromName As Any, yMsg As Byte, ByVal lSize As Long) As Long
Private Const NERR_Success As Long = 0&


Public Function SendMessage(RcptToUser As String, i As String, Txtmessage As String) As Boolean
Dim RcptTo() As Byte
Dim From() As Byte
Dim Body() As Byte


RcptTo = RcptToUser & vbNullChar
From = i & vbNullChar
Body = Txtmessage & vbNullChar


If NetMessageBufferSend(ByVal 0&, RcptTo(0), ByVal 0&, Body(0), UBound(Body)) = NERR_Success Then
SendMessage = True
End If
End Function


Public Function Selectionner() As Integer
Dim i As Integer

'Choisi les valeurs de 1 a 20
For i = 1 To 20
If i <> 16 Then Check4(i) = 1
Next

End Function


Public Function Deselectionner() As Integer
Dim i As Integer

'Choisi les valeurs de 1 a 20
For i = 1 To 20
If i <> 16 Then Check4(i) = 0
Next

End Function


Public Function DeselectionnerQuebec() As Integer
Dim i As Integer

'Choisi les valeurs de 15 a 20
For i = 15 To 20
If i <> 16 Then Check4(i) = 0
Next

End Function


Public Function SelectionnerQuebec() As Integer
Dim i As Integer

'Choisi les valeurs de 15 a 20
For i = 15 To 20
If i <> 16 Then Check4(i) = 1
Next

End Function


Public Function DeselectionnerMontreal() As Integer
Dim i As Integer

If 1 = 1 Then
'Choisi les valeurs de 1 a 14
For i = 1 To 14
If i <> 16 Then Check4(i) = 0
Next

For i = 19 To 20
'Choisi les valeurs de 19 a 20
If i <> 16 Then Check4(i) = 0
Next
End If

End Function


Public Function SelectionnerMontreal() As Integer
Dim i As Integer

If 1 = 1 Then
'Choisi les valeurs de 1 a 14
For i = 1 To 14
If i <> 16 Then Check4(i) = 1
Next

'Choisi les valeurs de 19 a 20
For i = 19 To 20
If i <> 16 Then Check4(i) = 1
Next
End If

End Function


Private Sub Check1_Click(Index As Integer)


If Check1(0) = 1 Then
'Appel la fonction selectionner
Selectionner
Else
'Appel la fonction selectionner
Deselectionner
End If

End Sub


Private Sub Check2_Click(Index As Integer)


If Check2(0) = 1 Then
'Appel la fonction selectionner quebec
SelectionnerQuebec
Else
'Appel la fonction deselectionner quebec
DeselectionnerQuebec
End If

End Sub


Private Sub Check3_Click(Index As Integer)


If Check3(0) = 1 Then
'Appel la fonction selectionner montreal
SelectionnerMontreal
Else
'Appel la fonction deselectionner montreal
DeselectionnerMontreal
End If

End Sub


Private Sub CmdClear_Click()
Dim i As Integer

'enleve tout les crochets des checkbox 1 a 20
For i = 1 To 20
If i <> 16 Then Check4(i) = 0
Next

'met le champ txtmessage a vide
Txtmessage.Text = ""

End Sub


Private Sub CmdEnvoyer_Click()


Dim nom As String
Dim a As Long
Dim i As Integer
Dim SendArray() As Variant
Dim msg As String

'Nom d'utilisateurs, a placer dans l'ordre de l'index
SendArray = Array("", "Cjoly", "Danielle.lallemand", "Dlevrac", "franclou", "liletour", "lcanci", "lulafleu", "manon.poirier", "maria.doganieri", "michele.dumoulin", "mitomass", "nicole.chauvin", "steve.nardini", "jtncht", "Carole.girard", "linda.tanguay", "lolepage", "mbolduc1", "Claude.berube", "Cdesjard")

'Verifie si le champ txtmessage a quelque chose d'inscrit
If Txtmessage = "" Then
MsgBox "Veuillez inscrire un message avant de l'envoyer", vbInformation, "Messagerie"
Else
'Met le nom dans une variable nom
nom = InputBox("Quel est votre nom ?", "Messagerie interne")

'Verifie si la variable nom a quelque chose d'inscrit
If nom = "" Then
MsgBox "Veuillez inscrire un nom pour envoyer votre remessage", vbInformation, "Messagerie"
Else
'Choisi les valeurs de 2 a 20
For i = 2 To 20
'Regarde les valeurs de Check4
If Check4(i) Then
'Envoi un message a la personne de la liste en haut (en ordre)
Shell ("net send " & SendArray(i) & " " & Txtmessage & " ---Message de : " & nom)
a = a + 1
End If
Next
End If
'Appel la fonction pour clearer
CmdClear_Click
End If
End Sub


Private Sub Quitter_Click()
Unload Me
End Sub

Private Function GetNetSendMessageStatus(nError As Long) As String

Dim msg As String

Select Case nError

Case NERR_Success: msg = "Message envoyé avec succès"
Case NERR_NameNotFound: msg = "Destinataire non trouvé, ou son ordinateur est fermé"
Case NERR_NetworkError: msg = "Message non envoyé, probleme de réseau"
Case NERR_UseNotFound: msg = "Aucune connection trouvé, vérifiez le cable réseau"
Case ERROR_ACCESS_DENIED: msg = "Message non envoyé, Voir l'administrateur"
Case ERROR_BAD_NETPATH: msg = "Message non envoyé, Voir l'administrateur"
Case ERROR_INVALID_PARAMETER: msg = "Message non envoyé, Voir l'administrateur"
Case ERROR_NOT_SUPPORTED: msg = "NMessage non envoyé, Voir l'administrateur"
Case ERROR_INVALID_NAME: msg = "Caractère non-conforme, veuillez envoyer de nouveau"
Case Else: msg = "Message non envoyé, Voir l'administrateur"

End Select

GetNetSendMessageStatus = msg

End Function

merci d'avance sur l'aide

12 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
26 mai 2005 à 00:44
Pourquoi faire une fonction SendMessage() basé sur l'API
NetMessageBufferSend() -ce qui est très bien- et utiliser un Shell("net
Send ...) dans ta boucle principale ????



Comprend pas la ?


Christophe R
0
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005
26 mai 2005 à 06:12
ok, je vais expliquer, dans mon frame, j'ai mis un label (nommé label1)
et je voudrais que ce label me fasse un genre de """status""",
qu'il prenne les dernieres valeures de mon code (fonction GetNetSendMessageStatus)
et qu'il le place dans mon label, parce que ce que j'avais fait,
c'était que tout de suite apres mon shell(net send...) je mettais un
msgbox qui me disait combien de msg j'ai envoyé et ils étaient tous
envoyé avec succès meme s'il y en avait qui n'était pas envoyé (parce
que exemple, le nom était invalide)



lorsque je pesserai sur cmdenvoyer, je veux qu'il envoi le message (du
moin, qu'il essaie) et qu'il me donne le statut du message (envoyé ou
non acheminé)



est-ce plus clair ??
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
26 mai 2005 à 12:20
Modifie ta fonction SendMessage() comme ceci

Public Function SendMessage(RcptToUser As String, i As String, Txtmessage As String) As Long
Dim RcptTo() As Byte
Dim From() As Byte
Dim Body() As Byte



RcptTo = RcptToUser & vbNullChar
From = i & vbNullChar
Body = Txtmessage & vbNullChar



SendMessage = NetMessageBufferSend(ByVal 0&, RcptTo(0), ByVal 0&, Body(0), UBound(Body))
End Function


Et appelles la en lieu et place du Shell("Net Send ...")



Dim Ret As Long



For i = 2 To 20
'Regarde les valeurs de Check4
If Check4(i) Then
'Envoi un message a la personne de la liste en haut (en ordre)
Ret = SendMessage(SendArray(i), nom, Txtmessage)

If Ret <> NERR_Success Then Msgbox GetNetSendMessageStatus(Ret)

a = a + 1
End If
Next


La, j'ai envoyé le message d'erreur dans une messagebox, mais tu pourras le fourrer dans ton label si tu veux.
A
noter que dans le cas ou un msg d'erreur devrait apparaitre, il faudra
savoir ce que tu veux faire ? Stopper tous les autres envois, ou bien
continuer ? Pour stopper tout, suffira de rajouter un "Exit For", pour
continuer, faudra faire en sorte que ta Label puisse afficher plusieurs
msg d'erreur au cas ou ...
Christophe R
0
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005
26 mai 2005 à 13:36
salut, tout a l'air de bien fonctionner, sauf quand je fait un mesage, ca me dit, ByRef argument type mismatch et ca me selectionne le SendMessage(i) que tu m'a fait rajouter
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
26 mai 2005 à 14:51
Je ne t'ai fait rajouté aucun SendMessage(i) !!!

Christophe R
0
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005
26 mai 2005 à 15:04
lol, c'était SendArray(i) dsl
0
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005
26 mai 2005 à 20:11
alors ?? une réponse ??
0
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 13:52
alors ?, quelqu'un peut maider ?
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 mai 2005 à 15:51
Essaye de mettre "CStr(SendArray(i))" à la palce de "SendArray(i)", histoire de forcer la conversion en type String.

 Christophe R
0
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005
30 mai 2005 à 16:25
ma ligne va ressembler a quoi maintenant ??

ret = SendMessage CSTR((SendArray(i)), nom, Txtmessage)
pcq maintenant, ca me dit end of statement expected
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
1 juin 2005 à 11:11
non ! Ca va donner cela ...
ret = SendMessage(CSTR(SendArray(i)), nom, Txtmessage)

 Christophe R
0
Maglore Messages postés 8 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 1 juin 2005
1 juin 2005 à 14:14
ouais, merci quand meme, j'ai demandé a mon prof de prog de me le corriger, jétais pas sensé mais je lai fait quand meme,

merci beaucoup de l'aide, c'étais ca

Francois
*Francois bows deeply to Christophe*
0
Rejoignez-nous