[R] Commande DOS renvoi APPCRASH
Posté : jeu. 11 juin 2015 19:49
Hello,
J'ai un script complexe qui exécute plusieurs commandes, dont des commandes dos. Mais, je ne sais pour quelle raison, j'en ai une qui aléatoirement me fait planter tout le programme et je n'en vois pas la raison.
Voici la commande : Netsh AdvFirewall firewall show rule name=all
Au milieu du programme elle plante, mais exécutée depuis une fenêtre dos, il n'y a aucun problème.
Ai-je un problème de codage?
De plus, en début de script j'utilise la commande :
Mais celui-ci ne capte pas l'erreur et fait un crash du Windows, pourquoi?
Merci d'avance pour l'aide à ses deux problèmes, mais liés.
J'ai un script complexe qui exécute plusieurs commandes, dont des commandes dos. Mais, je ne sais pour quelle raison, j'en ai une qui aléatoirement me fait planter tout le programme et je n'en vois pas la raison.
Voici la commande : Netsh AdvFirewall firewall show rule name=all
Au milieu du programme elle plante, mais exécutée depuis une fenêtre dos, il n'y a aucun problème.
Code : Tout sélectionner
Func _OEMToAnsi($sOEM)
$errorFunction &= " - OEMToAnsi"
Local $a_Error[6] = [5, "unable to use the DLL file", "unknown 'return type'", "'function' not found in the DLL file", "bad number of parameters", "bad parameter"]
; http://autoitscript.fr/forum/viewtopic.php?f=21&t=4108&hilit=conversion+OEM+ANSI
Local $a_AnsiFName = DllCall('user32.dll', 'Int', 'OemToChar', 'str', $sOEM, 'str', '')
If @error Then SetError(1, 0, "Error : " & $a_Error[@error] & " (" & $sOEM & ")")
Return $a_AnsiFName[2]
EndFunc ;==>_OEMToAnsi
Func DosCommand($sCommand)
Local $sCmdOutput= "", $sValue = ""
Local $hWndCmd = Run(@ComSpec & " /c " & $sCommand, "", @SW_HIDE, $STDOUT_CHILD )
While True
;~ $sCmdOutput = StdoutRead($hWndCmd)
If @error Then ExitLoop
; this section will display it as it is being read
If $sCmdOutput <> "" Then
If $sCmdOutput <> "" Then $sValue &= _OEMToAnsi($sCmdOutput)
EndIf
; end section
WEnd
Return $sValue
EndFuncDe plus, en début de script j'utilise la commande :
Code : Tout sélectionner
Local $oErrorHandler = ObjEvent('AutoIt.Error', '_ObjErrorHandler')Merci d'avance pour l'aide à ses deux problèmes, mais liés.