Page 1 sur 2

[R] Arret du PC spécial

Posté : ven. 17 déc. 2010 09:34
par lokomass
Bonjour,

Encore un petit soucis...
J'aimerais à la fin de mon script, afficher un Msgbox tout simple qui me dit :

######################
#Arret du PC dans 60 secondes#
# #
# Annuler #
######################

Voila en gros le msgbox, le compte à rebours dans le label de celle ci descend de secondes en secondes jusqu'à 0 et éteint l'ordi à la fin...
Le bouton Annuler permet tout simplement de tout annuler, si je me trouve devant l'ordi.
Je ne sais pas si je suis clair, je ne vois pas vraiment comment réaliser une chose de ce type.


Merci d'avance

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 09:56
par Colin117
Je ne peux que te rediriger vers ici

Et te donner ça si t'as pas envie d'y aller ^^
► Afficher le texteCode

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 10:18
par lokomass
Alors je te remercie,

L'interface est exactement ce que je veux, seulement je pense qu'il faut que je modifie pas mal de choses au niveau du code.
Etant donné mon très grand niveau (blague blague) je ne sais pas si je vais y arriver, je vais essayer de bricoler.
En tout ca merci

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 10:26
par Colin117
Si tu veux je peux t'aider, tu veux quoi exactement ?

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 10:34
par lokomass
Merci beaucoup,

Je t'explique en détail.
J'ai crée un script qui fait les sauvegarde de mon PC et des mes serveurs.
Ce script sera programmé pour être lancé à heures et jours fixes de la semaine.
A la fin de ce script et à chaque fois, je veux dans un premier temps (mais ça n'est pas le sujet, et je n'ai pas encore trouvé la solution) :
- que autoit m'envoi un mail, me disant le temps qu'a mis le logiciel à tout faire (j'ai trouvé comment calculer le temps, mais pas encore la fonction mail, du moins elle ne fonctionne pas)
- que autoit m'affiche une fenetre (exactement dans le genre que ce que tu m'a donné, ou un msgbox) dans laquelle il y aura un bouton annuler. Cette fenetre lancera un chrono de 60 secondes mettons, et au bout de ces 60 secondes, elle eteindra automatiquement l'ordinateur (cas ou je ne suis pas devant le PC) mais proposera un bouton "Annuler" pour emepecher l'arret et sortir du programme (cas ou je suis devant le PC et ne veut pas son arret).

C'est vraiment bien une sorte de compte a rebours avec progress bar graphique comme tu m'a fait.

J'espere que tu comprend mieux maintenant ce que je recherche et te remercie encore de ton aide

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 10:48
par Colin117
ok déjà pour le temps je viens de trouver quelque chose, je ne sais pas si c'est ce que tu as fais mais je trouve ça pas mal:

@EDIT: j'ai pas réussi à afficher le message avec les TimerInit() et TimerDiff()...

Donc avec des sleeps

Code : Tout sélectionner

$time = 60000
while 1
    $time = $time - 1000
    Sleep(1000)
    If $time = 0 Then ; si $time attein 60000 millisecondes
        MsgBox( 16, "Chrono", "Vous avez atteint les 60 secondes") ; on affiche un message
        exit
    Else
        $TempsPasser = $time / 1000
        TrayTip("Chrono","Plus que " & $TempsPasser & " Secondes !", 1)

    Endif
Wend
 

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 10:54
par lokomass
Ok ça fonctionne bien, au bout de 60 secondes on a le msgbox qui arrive.
Maintenant il faut qu'on puisse intégrer ce chrono dans une fenetre avec bouton annuler, qui nous fait ce decompte dans une progressbar comme dans le code que tu m'a donné...

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 11:02
par lokomass
Pas mal du tout ce que tu as fait, on est pas loin là !!!
J'ai fait quelques premieres modifs, et comme je me doutais, plus rien ne marche lol
► Afficher le texte

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 11:28
par Colin117
Donc pour ça tu prend la fonction qui affichais le nom des fichier et tu le remplace par simplement les secondes:
► Afficher le texteAVANT
(le bouton annuler marche pas a cause du sleep)
► Afficher le texteAPRES
@Edit ton problème c'est que tu as modifier sans comprendre le script, je t'encourage avant de modifier quoique ce soit de faire des tests sur chaque éléments pour voir comment cela marche-t-il.

Je travail a utiliser autre chose que le sleep.

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 11:31
par Colin117
J'ai analysé ton code, tu as fais appelle à la fonction en boucle avant mais pas pendant la progressbar du coup le script bloque 60 secondes. Compare ton script au mien tu verras.

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 11:41
par lokomass
Ouah je vois je vois.

C'est presque parfait, il ne reste plus en gros :
- qu'a lancer automatiquement le bouton "Start simulation progress"
- mettre l'action d'arret du systeme a la fin du compte a rebours (ca je devrais pouvoir le faire)
- et liberer le bouton "Annuler" pour pouoir y cliquer dessus quand on veut (je suppose que l'action associée sera : exit)

Merci en tout cas !!


Edit : j'ai aussi trouvé ce topic pas mal et qui correspond bien niveau fonctionnement (l'interface est très moche lol mais ça peut aider aussi)
http://autoitscript.fr/forum/viewtopic.php?f=6&t=6046

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 12:00
par lokomass
Voilà, à priori il ne manquerais que l'action sur le bouton Annuler, en gros, je pense faire une boucle infinie, qui dit que si on appuie sur Annuler, on annule et on ferme tout....

► Afficher le texte

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 12:02
par Colin117
Le problème c'est que c'est par commande, et que celle-ci diffère parfois mais cela m'a l'aire d'être un bon script si tu veux le reprendre.

@Edit: J'essaie d'utiliser les TimerInit() et TimerDiff() mais je n'arrive pas à les mettre en compte à rebours.

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 13:23
par lokomass
Je n'ai pas tout compris à ton dernier message, aurais-tu une idée pour ce fameux bouton annuler parce que c'est là ou je coince ?

Edit : il y a un autre soucis, dans mon script, l'ordinateur ne s'eteint pas a la fin du compte a rebours, ça recommence sans cesse, je ne vois pas et ne comprend pas pourquoi.

Donc si je resume il reste :
- faire une seule boucle de 60 a 0 sans recommencer, et eteindre l'ordi
- faire en sorte qu'a n'importe quel moment du compte a rebours entre et 60 et 0 on puisse cliquer sur Annuler et fermer la fenetre

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 13:26
par Colin117
Mon message disait en gros que le script que tu avais trouver qui ressembler au tient était pas trop mal mais très limité.

Et oui j'ai trouver une solution mais qui me pose une colle sur la Progresse. Je suis en train de réglé tout ça, la solution c'est que le Sleep pour mesurer le temps arrête le script donc pendant le sleep on ne peut rien faire. Donc j'ai utilisé d'autres fonctions citées ci-dessus

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 14:06
par Colin117
Pff après environ d'une heure et demi de bataille avec mes leçons de math à me retaper toute la proportionnalité, j'ai enfin réussi a faire en sorte que cette progressbar puisse décrémenté proportionnellement aux secondes. pff c'était hardcore je vous le dit !

► Afficher le texteFICHUE CODE
Bref pour finir après le next, tu éfface les ligne et tu met shutdown(16) je crois je sais plus.
au pire tu va dans google tu tape: AutoIt shutdown(

Re: [..] Arret du PC spécial

Posté : ven. 17 déc. 2010 15:03
par lokomass
Mille merci à toi !!!

J'ai réussi à tout mettre en place comme je voulais, je met mon nouveau code modifié en bas, mais en tout cas, encore merci à toi d'avoir pris le temps de m'aider

► Afficher le texte

Re: [R] Arret du PC spécial

Posté : ven. 17 déc. 2010 15:30
par Colin117
De rien, ce fut un plaisir.

Re: [R] Arret du PC spécial

Posté : mar. 21 déc. 2010 14:46
par lokomass
Re salut,

Bon je suis désolé de revenir vers toi mais j'ai voulu faire une modif et ça ne fonctionne pas comme je veux alors, sans vouloir abuser de ta bonté, voici le soucis.

J'ai décider d'augmenter le temps avant que l'ordi s'éteigne de 60 à 500 secondes finalement.
J'ai tout betement remplacer les "60" par des "500" mais en rendant rapidement compte que ça ne fonctionnait pas...
Il se pass simplement, que de 500 à 400 pas de soucis, mais au lieu de continuer vers 399 on passe a 490 et gros beug, ralentissement plus rien ne marche.
Donc si tu pouvais soit juste me dire quoi faire, soit carément me remodifier le fichier mais je ne veux pas abuser....

Je te met le code, merci en tout cas..

► Afficher le texte

Bon en trafficotant j'ai finakement réussi en modifiant ceci (selon ma logique lol) :

Code : Tout sélectionner

    If $Time < 10 Then
        $Virgule = StringLeft($Time, 1)
    ElseIf $Time > 10 And $Time < 100 Then
        $Virgule = StringLeft($Time, 2)
    Elseif $time > 100 Then
        $Virgule = StringLeft($Time, 3)
    EndIf

Re: [R] Arret du PC spécial

Posté : mer. 22 déc. 2010 10:19
par Colin117
Excuse moi pour le retard,
lokomass a écrit :

Code : Tout sélectionner

    
;- Ceci est la fonction pour enlever tous les chiffres après la virgule. d'où le nom de la variable que j'ai pas trouver mieux ^^'
    If $Time < 10 Then ;- Si la variable du temps n'a pas dépasser la dizaine, alors
        $Virgule = StringLeft($Time, 1) ; on ne prend que le premier chiffre
    ElseIf $Time > 10 [color=#FF0000][u]And $Time < 100 Then[/u][/color] ;- ça t'en a pas besoin ! ;- si il a dépasser la dizaine, alors
        $Virgule = StringLeft($Time, 2) ; on prend les deux premiers chiffre
    Elseif $time > 100 Then ; si il a dépasser les centaine, alors
        $Virgule = StringLeft($Time, 3) ; on prend les 3 premier chiffre (ça tu l'as compris tout seul c'est super)
    EndIf ; fin du si
 
T'en a pas besoin vue que en bas, on vérifie si il est plus grand.
Sinon ouais c'est bien.

Je m'aperçois maintenant que je n'avais pas non plus fais de commentaires pour t'aider à comprendre le script, mais je vois que mon conseil de faire des test et de chercher à porter ses fruits, je suis content de toi !
J'ai rajouter des explication mais je suppose que tu avais compris. c'est juste pour les gens qui passent par là.

Et donc si on veux des milliers de secondes, on continue: "ElseIf $time > 1000 Then $Virgule = StringLeft($Time, 4)"
Bref etc... etc...