Voilà j'ai un problème avec le programme que je suis en train de faire, toutes les fonctions marchent correctement mais dans une situation bien précise. Le bug est en fait un label ($Label4 de la fonction _ping($IP)) qui apparait alors qu'il ne le devrait pas.
Pour déclencher le problème, je lance le programme, je fais un ping à l'aide du bouton "Ping" (l'adresse du ping ne joue pas sur le probleme) puis une fois le ping fait je vais directement dans le menu "Ipconfig" puis dès que je coche la case "/all" le probleme apparait. Je précise que ça ne le fait pas avec les autres "checkbox" pourtant il me semble qu'elles ont la même syntaxe de fonction.
Voici le code pour que vous voyez le soucis :
Code : Tout sélectionner
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiIPAddress.au3>
#include <Constants.au3>
#Region ### START Koda GUI section ### Form=C:\scripts\Form1.kxf
$Form1 = GUICreate("Prog v1.0", 633, 438)
Global $Fichiermenu = GUICtrlCreateMenu("Fichier")
Global $Quitteritem = GUICtrlCreateMenuItem("Quitter Alt+F4", $Fichiermenu)
Global $Editionmenu = GUICtrlCreateMenu("Edition")
Global $Couperitem = GUICtrlCreateMenuItem("Couper Ctrl+X", $Editionmenu)
Global $Copieritem = GUICtrlCreateMenuItem("Copier Ctrl+C", $Editionmenu)
Global $Colleritem = GUICtrlCreateMenuItem("Coller Ctrl+V", $Editionmenu)
Global $Effaceritem = GUICtrlCreateMenuItem("Effacer", $Editionmenu)
Global $Aidemenu = GUICtrlCreateMenu("Aide")
Global $Apropositem = GUICtrlCreateMenuItem("A Propos ...", $Aidemenu)
Global $Button1 = GUICtrlCreateButton("Ipconfig", 148, 376, 81, 33, $WS_GROUP)
Global $Button2 = GUICtrlCreateButton("Ping", 392, 376, 81, 33, $WS_GROUP)
Global $Button3 = GUICtrlCreateButton("Effacer", 16, 208, 65, 33, $WS_GROUP)
Global $Button4 = GUICtrlCreateButton("Release", 555, 154, 65, 33, $WS_GROUP)
Global $Button5 = GUICtrlCreateButton("Renew", 555, 262, 65, 33, $WS_GROUP)
Global $Text = GUICtrlCreateEdit("", 104, 80, 433, 281, BitOR($ES_MULTILINE,$ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_TABSTOP,$WS_VSCROLL,$WS_VISIBLE,$WS_CHILD))
Global $enabled = 0
Global $child = 0
Global $child2 = 0
Global $Buttonfermer = GUICtrlCreateButton("Fermer", 160, 56, 75, 25)
Global $Buttonlancer = GUICtrlCreateButton("Lancer", 20, 56, 75, 25)
Global $Buttonfermer2 = GUICtrlCreateButton("Fermer", 200, 80, 75, 25)
Global $Buttonlancer2 = GUICtrlCreateButton("Lancer", 20, 80, 75, 25)
Global $Checkbox1 = GUICtrlCreateCheckbox("-a", 150, 50, 75, 25)
Global $Checkbox2 = GUICtrlCreateCheckbox("/all", 8, 40, -1, -1)
Global $Checkbox3 = GUICtrlCreateCheckbox("/flushdns", 100, 40, -1, -1)
Global $Checkbox4 = GUICtrlCreateCheckbox("/displaydns", 210, 40, -1, -1)
Global $Label2 = GUICtrlCreateLabel("Ping :", 8, 50, 120, 17)
GUICtrlSetState($Buttonfermer, $GUI_HIDE)
GUICtrlSetState($Buttonlancer, $GUI_HIDE)
GUICtrlSetState($Checkbox1, $GUI_HIDE)
GUICtrlSetState($Checkbox2, $GUI_HIDE)
GUICtrlSetState($Checkbox3, $GUI_HIDE)
GUICtrlSetState($Checkbox4, $GUI_HIDE)
GUICtrlSetState($Label2, $GUI_HIDE)
GUICtrlSetState($Buttonfermer2, $GUI_HIDE)
GUICtrlSetState($Buttonlancer2, $GUI_HIDE)
$IPAddress1 = _GUICtrlIpAddress_Create($child, 104, 24, 130, 21)
_GUICtrlIpAddress_Set($IPAddress1, "0.0.0.0")
$separation1 = GUICtrlCreateMenuItem("", $Editionmenu, 3) ; Créer une ligne de séparation
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$fichier = @WindowsDir
$fichierread = FileRead ( $fichier & " \ipconfig.txt " )
$Os = @OSVersion
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
FileDelete("C:\WINDOWS\ipconfig.txt")
FileDelete("C:\WINDOWS\ping.txt")
FileDelete("C:\WINDOWS\release.txt")
FileDelete("C:\WINDOWS\renew.txt")
Fin()
Case $Button1
$child2 = GUICreate("Ipconfig", 300, 140, -1, -1, $WS_EX_TOOLWINDOW, -1, $Form1)
$Label3 = GUICtrlCreateLabel("ipconfig :", 8, 14, 120, 17)
$Checkbox2 = GUICtrlCreateCheckbox("/all", 8, 40, -1, -1)
$Checkbox3 = GUICtrlCreateCheckbox("/flushdns", 100, 40, -1, -1)
$Checkbox4 = GUICtrlCreateCheckbox("/displaydns", 210, 40, -1, -1)
$Buttonfermer2 = GUICtrlCreateButton("Fermer", 200, 80, 75, 25)
$Buttonlancer2 = GUICtrlCreateButton("Lancer", 20, 80, 75, 25)
GUISetState()
$enabled = 0
WinSetOnTop($child2, "", 1)
GUISetState(@SW_DISABLE, $Form1)
Case $Checkbox2
_Checkbox2Click()
Case $Checkbox3
_Checkbox3Click()
Case $Checkbox4
_Checkbox4Click()
Case $Button3
GUICtrlSetData($Text, "")
Case $Button4
RunWait(@ComSpec & " /c ipconfig /release > " & "C:\WINDOWS\release.txt", "", @SW_HIDE)
GUICtrlSetData($Text, FileRead($fichier & "\release.txt"))
If $OS = "WIN_7" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
If $OS = "WIN_VISTA" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
Case $Button5
RunWait(@ComSpec & " /c ipconfig /renew > " & "C:\WINDOWS\renew.txt", "", @SW_HIDE)
GUICtrlSetData($Text, FileRead($fichier & "\renew.txt"))
If $OS = "WIN_7" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
If $OS = "WIN_VISTA" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
Case $Buttonlancer2
_LancerIpconfig()
GUICtrlSetData($Text, FileRead($fichier & "\ipconfig.txt"))
If $OS = "WIN_7" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
If $OS = "WIN_VISTA" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
GUIDelete($child2)
$enabled = 1
GUISetState(@SW_ENABLE, $Form1)
WinSetOnTop($Form1, "", 1)
Case $Buttonfermer2
GUIDelete($child2)
$enabled = 1
GUISetState(@SW_ENABLE, $Form1)
WinSetOnTop($Form1, "", 1)
Case $Quitteritem
FileDelete("C:\WINDOWS\ipconfig.txt")
FileDelete("C:\WINDOWS\ping.txt")
FileDelete("C:\WINDOWS\release.txt")
FileDelete("C:\WINDOWS\renew.txt")
Fin()
Case $Apropositem
MsgBox(64, "A Propos", "Prog v1.0" & @CRLF & "Développé par : " & @CRLF & "Companie :" & @CRLF & @CRLF & "Compatible : Windows XP / Windows Vista / Windows 7", -1, $Form1)
Case $Couperitem
Send("{CTRLDOWN}")
Send("x")
Send("{CTRLUP}")
Case $Copieritem
Send("{CTRLDOWN}")
Send("c")
Send("{CTRLUP}")
Case $Colleritem
Send("{CTRLDOWN}")
Send("v")
Send("{CTRLUP}")
Case $Effaceritem
GUICtrlSetData($Text, "")
EndSwitch
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
Case Not $enabled And Not WinExists($child)
$enabled = 1
GUISetState(@SW_ENABLE, $Form1)
Case $nMsg = $Button2
$child = GUICreate("Ping", 300, 140, -1, -1, $WS_EX_TOOLWINDOW,-1,$Form1)
$Buttonfermer = GUICtrlCreateButton("Fermer", 200, 80, 75, 25)
$Buttonlancer = GUICtrlCreateButton("Lancer", 20, 80, 75, 25)
$Label1 = GUICtrlCreateLabel("Saisir l'adresse à pinger :", 8, 24, 120, 17)
$Label2 = GUICtrlCreateLabel("Ping :", 8, 50, 120, 17)
$Checkbox1 = GUICtrlCreateCheckbox("-a", 140, 50, -1, -1)
$IPAddress1 = _GUICtrlIpAddress_Create($child, 140, 24, 130, 17)
GUISetState()
$enabled = 0
WinSetOnTop($child, "", 1)
GUISetState(@SW_DISABLE, $Form1)
Case $nMsg = $Buttonlancer
_choix()
GUICtrlSetData($Text, FileRead($fichier & "\ping.txt"))
If $OS = "WIN_7" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
If $OS = "WIN_VISTA" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
If $OS = "WIN_XP" Then GUICtrlSetData($Text, _OEMToAnsi(GUICtrlRead($Text)))
Case $nMsg = $Buttonfermer
GUIDelete($child)
$enabled = 1
GUISetState(@SW_ENABLE, $Form1)
WinSetOnTop($Form1, "", 1)
EndSelect
WEnd
Func Fin()
SplashTextOn("", "Fermeture du programme en cours, Veuillez patienter ...", 450, 70, -1, -1, 0 + 1 + 16 + 32, "Times New Roman", 12, 800)
Sleep(2000)
SplashOff()
Exit
EndFunc
Func _OEMToAnsi($sOEM)
Local $a_AnsiFName = DllCall('user32.dll', 'Int', 'OemToChar', 'str', $sOEM, 'str', '')
If @error = 0 Then $sAnsi = $a_AnsiFName[2]
Return $sAnsi
EndFunc ;==>_OEMToAnsi
Func _ping($IP)
; on met un petit écran d'attente
$Form2 = GUICreate("Patience", 229, 94, -1, -1, $DS_MODALFRAME, -1, $child)
$Label4 = GUICtrlCreateLabel("Ping en cours." & @CRLF & "Veuillez patienter quelques instants ...", 24, 16, -1, -1)
GUISetState(@SW_SHOW, $Form2)
Local $erreur = False
Local $blocs[5], $i
; on check l'IP
$blocs = StringSplit($IP, ".")
For $i = 1 To 4
If $blocs[$i] < 0 Or $blocs[$i] > 255 Then $erreur = True
ConsoleWrite($blocs[$i] & @CRLF)
Next
If $erreur = False Then ; si c'est bon, on ping
RunWait(@ComSpec & " /c ping " & $IP & " > " & "c:\WINDOWS\ping.txt", "", @SW_HIDE)
GUIDelete($Form2) ; on enleve l'écran d'attente
If @error = 0 Then ; et on affiche le résultat (Ok ou erreur)
MsgBox(0, "Ping", "Ping effectué.", -1, $child)
GUIDelete($child)
$enabled = 0
GUISetState(@SW_ENABLE, $Form1)
WinSetOnTop($Form1, "", 1)
Else
MsgBox(0, "Ping", "Le ping a échoué !", -1, $child)
EndIf
Else ; si c'est pas bon, on l'indique
MsgBox(0, "Ping", "Format de l'adresse IP non valide", -1, $child)
EndIf
EndFunc
Func _pinga($IP)
; on met un petit écran d'attente
$Form2 = GUICreate("Patience", 229, 94, -1, -1, $DS_MODALFRAME, -1, $child)
GUISetState(@SW_SHOW, $Form2)
$Label4 = GUICtrlCreateLabel("Ping en cours." & @CRLF & "Veuillez patienter quelques instants ...", 24, 16, -1, -1)
Local $erreur = False
Local $blocs[5], $i
; on check l'IP
$blocs = StringSplit($IP, ".")
For $i = 1 To 4
If $blocs[$i] < 0 Or $blocs[$i] > 255 Then $erreur = True
ConsoleWrite($blocs[$i] & @CRLF)
Next
If $erreur = False Then ; si c'est bon, on ping
RunWait(@ComSpec & " /c ping -a " & $IP & " > " & "c:\WINDOWS\ping.txt", "", @SW_HIDE)
GUISetState(@SW_HIDE, $Form2) ; on enleve l'écran d'attente
If @error = 0 Then ; et on affiche le résultat (Ok ou erreur)
MsgBox(0, "Ping", "Ping effectué.", -1, $child)
GUIDelete($child)
$enabled = 1
GUISetState(@SW_ENABLE, $Form1)
WinSetOnTop($Form1, "", 1)
Else
MsgBox(0, "Ping", "Le ping a échoué !", -1, $child)
EndIf
Else ; si c'est pas bon, on l'indique
MsgBox(0, "Ping", "Format de l'adresse IP non valide", -1, $child)
EndIf
EndFunc
Func _choix()
If GUICtrlRead($Checkbox1) = 1 Then
_pinga(_GUICtrlIpAddress_Get($IPAddress1))
Else
_ping(_GUICtrlIpAddress_Get($IPAddress1))
EndIf
EndFunc
Func _Checkbox2Click()
If GUICtrlRead($Checkbox2) = 1 Then
GUICtrlSetState($Checkbox3, $GUI_DISABLE)
GUICtrlSetState($Checkbox4, $GUI_DISABLE)
Else
GUICtrlSetState($Checkbox3, $GUI_ENABLE)
GUICtrlSetState($Checkbox4, $GUI_ENABLE)
EndIf
EndFunc
Func _Checkbox3Click()
If GUICtrlRead($Checkbox3) = 1 Then
GUICtrlSetState($Checkbox2, $GUI_DISABLE)
GUICtrlSetState($Checkbox4, $GUI_DISABLE)
Else
GUICtrlSetState($Checkbox2, $GUI_ENABLE)
GUICtrlSetState($Checkbox4, $GUI_ENABLE)
EndIf
EndFunc
Func _Checkbox4Click()
If GUICtrlRead($Checkbox4) = 1 Then
GUICtrlSetState($Checkbox2, $GUI_DISABLE)
GUICtrlSetState($Checkbox3, $GUI_DISABLE)
Else
GUICtrlSetState($Checkbox2, $GUI_ENABLE)
GUICtrlSetState($Checkbox3, $GUI_ENABLE)
EndIf
EndFunc
Func _LancerIpconfig()
If GUICtrlRead($Checkbox2) = 1 Then RunWait(@ComSpec & " /c ipconfig /all > " & "c:\WINDOWS\ipconfig.txt", "", @SW_HIDE)
If GUICtrlRead($Checkbox3) = 1 Then RunWait(@ComSpec & " /c ipconfig /flushdns > " & "c:\WINDOWS\ipconfig.txt", "", @SW_HIDE)
If GUICtrlRead($Checkbox4) = 1 Then RunWait(@ComSpec & " /c ipconfig /displaydns > " & "c:\WINDOWS\ipconfig.txt", "", @SW_HIDE)
EndFunc


