Mon programme servira à éteindre des pc sur un réseau, or le programme fonctionne lorsque je l'utilise sous vb6 en test mais ensuite lorsque je me sert du .exe que je génère à la fin le programme s'ouvre une seconde fois au lieu d'ouvrir la page ms-dos associé à la commande shutdown.
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 14 déc. 2005 à 10:38
salut$
qu'est ce qu'il fait d'autre ton programme ?
est ce que tu as gestion d'erreur dedans ?
je pense que ton probleme vient d'ailleur dans le programme, car la je vois vraiment pas ce qui peut provoquer un changement de comportement entre un lancement dans L'IDE et un lancement a partir d'un exe...
himurafred
Messages postés6Date d'inscriptionmercredi 7 décembre 2005StatutMembreDernière intervention14 décembre 2005 14 déc. 2005 à 11:57
salut
mon programme servira à éteindre tous les pc situé sur un réseau. la plage d'ip est enregistré dans le tableau tabip, qui est ensuite parcouru pour réaliser le shutdown sur tous les ip. Donc j'ai un bouton sur lequel j'appuie pour lancer l'arrêt des machines et dans ce bouton il n'y a que la boucle for et la commande shutdown. Dans l'interface de vb j'ai bien la fenêtre dos mais une fois compilé je ne l'ai plus et j'ai le programme qui s'ouvre une seconde fois à la place. Je me mets tout juste au vb donc j'ai pensé que c'était un problème d'options de compilation comme pour du c++ mais ça n'a pas l'air.
himurafred
Messages postés6Date d'inscriptionmercredi 7 décembre 2005StatutMembreDernière intervention14 décembre 2005 14 déc. 2005 à 14:53
Voici le code autour du shell :
Private Sub shutdown_Click()
Dim cmd As String
Dim i As Integer
For i = 1 To nbposte Step 1
cmd = "Shutdown -s -m \" + tabip(i - 1) + " -t 0"
Shell (cmd)
Next
End Sub
himurafred
Messages postés6Date d'inscriptionmercredi 7 décembre 2005StatutMembreDernière intervention14 décembre 2005 14 déc. 2005 à 16:12
je vous donne le compte complet pour vous aider à comprendre, le code comporte surement des imperfections car c'est l'un de mes premiers projets en vb, je suis plus orienté c++ d'habitude.
'8 Adresses IP pré-enregistrées
Dim tabip() As Variant
Dim nbposte, indice As Integer
Dim valide As Boolean
Private Sub Form_Load()
indice = 0
valide = False
nbposte = 8
tabip = Array("172.16.101.1", "172.16.101.2", "172.16.101.3", "172.16.101.4", "172.16.101.5", "172.16.101.6", "172.16.101.7", "172.16.101.8")
For Each ip_enregistré In tabip
Listip.AddItem (ip_enregistré)
Next
End Sub
Private Sub shutdown_Click()
Dim cmd As String
Dim i As Integer
For i = 1 To nbposte Step 1
cmd = "Shutdown -s -m \" + tabip(i - 1) + " -t 0"
Shell (cmd)
Next
End Sub
Private Sub Validebuttonip_Click()
nbposte = nbposte1.Text
If (nbposte = "") Then
MsgBox ("Vous avez oublié de donner le nombre de poste")
Else
If (nouveau_ip.Text = "") Then
MsgBox ("Vous avez oublié de mentionner l'adresse ip du poste")
Else
indice = indice + 1
tabip(indice - 1) = nouveau_ip.Text
chaine = CStr(indice + 1)
Listip.AddItem (tabip(indice - 1))
If (nbposte = indice) Then
Validebuttonip.Enabled = False
shutdown.Enabled = True
Else
Labelnouveauip.Caption = "Donnez l'ip de l'ordinateur n°" + chaine + " :"
End If
End If
End If
End Sub
Private Sub Valideip_Click()
If (Valideip.Value = 0) Then
shutdown.Enabled = False
Validebuttonip.Enabled = True
nbposte1.Enabled = True
nouveau_ip.Enabled = True
Listip.Clear
End If
End Sub
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 14 déc. 2005 à 17:40
hmmm....
et tu es sur que ton programme fonctionne bien quand tu le lance directement depuis la source ?
bizare. je ne vois pas ce qui peut faire ca.
juste une precision : quand tu fais
Dim nbposte, indice As Integer
nbPoste n'est pas défini en tant que Integer, mais en tant que variant.
il te faudra faire dim nbPoste as integer, indice as integer.
pour faire le test, avant de lancer ta boucle ou il y a les shutdown, fait un msgBox pour afficher la valeur de nbPoste. il se pourrait que cette variable ne soit pas a la valeur voulue ( a mon avis elle vaut 0)