Page 2 sur 2

Re: [R] Arret du PC spécial

Posté : mer. 22 déc. 2010 10:40
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

Re: [R] Arret du PC spécial

Posté : mer. 22 déc. 2010 10:49
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 ++

Re: [R] Arret du PC spécial

Posté : mer. 22 déc. 2010 12:47
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

Re: [R] Arret du PC spécial

Posté : jeu. 27 janv. 2011 08:29
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

Re: [R] Arret du PC spécial

Posté : ven. 28 janv. 2011 09:04
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..