[R] Arret du PC spécial

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Arret du PC spécial

#21

Message par zeshrek »

Y a aussi l'option d'utiliser _TicksToTime plutot que de faire des calculs ou on divise les secondes par 10, 100 ou 1000
Avec un peu d'immagination, ca permet aussi de de faire un compte a rebour qui dépasse les 60 secondes...

Code : Tout sélectionner

Func _GetTimer()
    Local $Progression = 0
    Local $Time = 0
    Local $Virgule = 0
    Local $heures, $mins, $secs
    $TimerOut = TimerDiff($timer)
[color=#FF0000]    _TicksToTime($TimerOut,$heures,$mins,$secs)
    $Virgule=$secs[/color]
    $Seconds = 60 - $Virgule
    $Progression = $Progression + $Virgule * (100 / 60)
    GUICtrlSetData($Progress, 100 - $Progression)
    return $Seconds
EndFunc
Si vis pacem para bellum
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [R] Arret du PC spécial

#22

Message par lokomass »

Ok merci à vous deux.

Mais en fait, ou alors c'est moi, j'ai tester de mettre uniquement le :

Code : Tout sélectionner

ElseIf $Time > 10
Mais ça ne fonctionnait toujours pas et c'est la ou (logiquement) j'ai rajouter l'autre condition :

Code : Tout sélectionner

And $Time < 100 Then
Et la par miracle ça à marcher.

Au final j'ai modifié encore un peu de manière à mettre en paramètre le temps d'attente (à partir du moment ou, maintenant je l'ai compris, on ne dépasse pas 1000)
► Afficher le texte
Voila

Bref, merci en tout cas encore à vous deux.
Je suis content que quelqu'un soit fier de moi !!

A ++
Colin117
Niveau 5
Niveau 5
Messages : 114
Enregistré le : jeu. 18 nov. 2010 17:57
Localisation : Vers là bas !
Status : Hors ligne

Re: [R] Arret du PC spécial

#23

Message par Colin117 »

En effet je viens de revérifier j'ai totalement tord, au-temps pour moi ne m'écoute plus...

Tu as raison car, il fais la vérification que $time est plus haut que 10 mais lorsqu'il dépasse les 100, les deux conditions sont vrai. donc comme tu as fais c'est très bien !

Je suis désoler. bonne continuation !

Et la technique à Zeshrek n'est pas mal non plus, je ne connaissais pas cette fonction. Merci je vais l'étudier de plus près !



Cordialement
Colin117
► Afficher le texte
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [R] Arret du PC spécial

#24

Message par lokomass »

Salut me revoilà parce que j'ai un petit soucis....
En fait il arrive de temps en temps, de manière aléatoire que le script ne fonctionne pas.
Et je pense que le problème vient du compte à rebours, à partir du moment ou on arrive au compte à rebours, ou peut-être sur la fonction mail, qui en chie et ça plante, je ne sais pas...
Mais comme j'envoi un mail à chaque fois avec le script au début, ça ne plante jamais, donc c'est surement pas la fonction mail en fait, mais vraiment le compte à rebours ??? Je met la fonction mail au cas ou les pro trouvent des choses qui clochent...

Mais voici le message d'erreur windows :

Code : Tout sélectionner

Fichiers aidant à décrire le problème :
  C:\Users\Lokomass\AppData\Local\Temp\WERA6EA.tmp.WERInternalMetadata.xml
  C:\Users\Lokomass\AppData\Local\Temp\WERC15E.tmp.appcompat.txt
  C:\Users\Lokomass\AppData\Local\Temp\WERC46B.tmp.WERDataCollectionFailure.txt

Lire notre déclaration de confidentialité en ligne :
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x040c

Si la déclaration de confidentialité en ligne n’est pas disponible, lisez la version hors connexion :
  C:\Windows\system32\fr-FR\erofflps.txt
 
Et voici le code, je ne vois vraiment pas ce qui bloque :

Code : Tout sélectionner

[spoiler=]============================================================= Chrono ============================================================
$Duree = Time(TimerDiff($Debut))
$SujetMail = "Sauvegarde Terminée"
$MessageMail = "La sauvegarde a été réalisée avec succès en "&$Duree




;=========================================================== Mail & Stop =========================================================
Sendmail($SujetMail,$MessageMail)
Eteindre(500)



;====================================================== Envoi Mail Confirm =======================================================
func SendMail($s_Subject,$as_Body)
$s_SmtpServer = _INetGetSource("http://www.autoitscript.fr/smtp.php")
$s_FromName = "Lokomass"
$s_FromAddress = "fghfdgh"
$s_ToAddress = "fdhfh"
$s_CcAddress = ""
$s_BccAddress = ""
$s_Username = "dfhfghfgh"
$s_Password = "fhfghfgh"
$IPPort = 25
$ssl = 0
$mail=""
$s_AttachFiles = ""
$mail= INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username ="", $s_Password="",$IPPort, $ssl)
EndFunc



Func  INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject , $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password ,$IPPort, $ssl)
    $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body,"<") and StringInStr($as_Body,">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment ($S_Files2Attach[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
                SetError(1)
                return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $Ssl Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    $objEmail.Configuration.Fields.Update
    $objEmail.Send
    if @error then
        SetError(2)
        return
    EndIf
EndFunc


Func MyErrFunc()
    Return
EndFunc




;========================================================== Arrêt du PC ==========================================================
Func Eteindre($Temps)
$Gui = GuiCreate("Arrêt du PC", 350, 120)
$ProgressLabel = GUICtrlCreateLabel("Annuler", 20, 30, 330)
$Progress = GUICtrlCreateProgress(20, 50, 300, 20)
$StartButton = GUICtrlCreateButton("Annuler", (350/2)-(140/2), 80, 140)
GUICtrlSetData($Progress, 100)
GUISetState(@SW_SHOW)


ControlClick("Arrêt du PC", "", "[CLASS:Button; INSTANCE:1]")


While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case -3
            Exit
        Case $StartButton
            GUICtrlSetData($ProgressLabel, "Veuillez patienter")

            GUICtrlSetData($StartButton, "Annuler")

            $sSeconds = $Temps
            $timer = TimerInit()

            For $sSeconds = $Temps to 0 step -1
                ConsoleWrite( " For = " & $sSeconds & @CRLF)
                $sSeconds = GetTimer($timer,$Progress,$Temps)
                GUICtrlSetData($ProgressLabel, "Arrêt dans " & $sSeconds & " secondes")
                If GUIGetMsg() = $StartButton Then
                    Exit
                Endif
            Next

            winclose("Arrêt du PC")
            Shutdown(1)

    EndSwitch
WEnd
EndFunc
[/spoiler]

Si vous voyez quelque chose de pas normal, je précise que cela fonctionne de temps en temps sans soucis, j'ai l'impression que c'est aléatoire

Merci
lokomass
Niveau 5
Niveau 5
Messages : 128
Enregistré le : mer. 15 déc. 2010 10:21
Status : Hors ligne

Re: [R] Arret du PC spécial

#25

Message par lokomass »

Bonjour,

Je continu à avancer, je ne pense pas qu'au final ce soit du au compte a rebours, comme j'envoi un mail juste avant, et que au final je ne reçois jamais ce mail parce que surement ça plante avant.
Il s'agit uniquement d'un plantage avec l'exe compilé, je suis sous Windows 7 x64.
Vaut-il mieux compiler le programme en 32 bits ou 64 ? Y'a t-il une option que j'ai oublié ??
Je vais tester avec le fichier au3 voir si j'ai le même bug et je reviens vers vous..
Répondre