Maglore
Messages postés8Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 1 juin 2005
-
25 mai 2005 à 20:01
Maglore
Messages postés8Date d'inscriptionvendredi 6 mai 2005StatutMembreDerniè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"
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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 ????
Maglore
Messages postés8Date d'inscriptionvendredi 6 mai 2005StatutMembreDerniè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é)
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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
Maglore
Messages postés8Date d'inscriptionvendredi 6 mai 2005StatutMembreDerniè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
Vous n’avez pas trouvé la réponse que vous recherchez ?