[R] Execution après compilation

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
foliolur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 23 sept. 2015 14:48
Status : Hors ligne

[R] Execution après compilation

#1

Message par foliolur »

Bonjour,

J'ai créé le script suivant qui me permet de générer des rapports tous les matins.
En gros je simule des cliques sur une application pour générer un fichier .txt. J'envoie
ensuite ce fichier .txt sur une boite mail commune du service informatique de ma boite.

Quand je suis dans l'éditeur aucun problème le script s’exécute bien et le rapport ainsi que le mail sont
générés correctement. Mais une fois compilé et automatisé via une tâche planifiée Windows le
script fonctionne une fois sur quatre environ. Le reste du temps les cliques sont mal simulés
ou le rapport et mal généré.

Je ne comprend pas trop le problème à moins d'avoir oublier un trucs essentiel. Je vois joint le code ci-dessous
► Afficher le texte
A préciser, c'est mon premier scripts sous Autoit, j'ai donc conscience que c'est peut être pas au point.
Modifié en dernier par foliolur le ven. 09 oct. 2015 11:44, modifié 2 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Execution après compilation

#2

Message par jguinch »

Merci de modifier le titre du message afin qu'il respecte les règles du présentation d'un message.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
foliolur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 23 sept. 2015 14:48
Status : Hors ligne

Re: [..] Execution après compilation

#3

Message par foliolur »

C'est fait
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Execution après compilation

#4

Message par orax »

foliolur a écrit :C'est fait
Image

Au lieu de Send() tu pourrais essayer avec ControlSend().
Au niveau de la tâche, est-ce que N'exécuter que si un utilisateur a ouvert une session est bien sélectionné ?
Si le logiciel peut être contrôlé via la ligne de commande ça serait plus fiable que de le contrôler par l'interface graphique avec des ControlClick, ControlSend, ...
L'ordinateur peut ne pas être assez réactif (trop lent). Dans ce cas, une pause (avec Sleep) entre les touches envoyés sera nécessaire.

Code : Tout sélectionner

Send("{T}")
Sleep(250) ; pause de 250 ms
Send("{E}")
Sleep(250)
Send("{ENTER}")
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
foliolur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 23 sept. 2015 14:48
Status : Hors ligne

Re: [..] Execution après compilation

#5

Message par foliolur »

Bonjour et merci Orax pour ton aide.

Pas de ligne de commande effectivement je doit faire avec l'interface graphique, c'est aussi
pour ca que je passe par Autoit et la simulation des actions clavier/souris.

Je vais essayer avec t'es conseil ControlSend() et rajouter des sleep. Pour la tâche planifiée je te
confirme j'ai bien coché l'option "N'exécuter que si un utilisateur a ouvert de session". après la tâche
démarre correctement j'ai pas d'erreur dans l'historique vis à vis de ca.

Je vais déjà faire les modifications je vous tiens au courant
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Execution après compilation

#6

Message par orax »

Dans le planificateur de tâches, la colonne Résultat de la dernière exécution retourne le code de sortie du programme. Par défaut, le code de sortie est 0 (pas d'erreur) mais le mot clé Exit permet de le changer.

Code : Tout sélectionner

$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & "  Description:" & $rc, 60) ; au bout de 60 secondes la boîte de dialogue se fermera automatiquement
    Exit 1
EndIf
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
foliolur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 23 sept. 2015 14:48
Status : Hors ligne

Re: [..] Execution après compilation

#7

Message par foliolur »

Bon ce matin avec les modifications c'étais pas mieux.

Du coup j'ai modifié la génération d'erreur comme tu ma indiqué Orax
et j'en ai profité pour clarifier un peux le code en déclarant des Dim
et en précisant toutes les INSTANCE de mes CLASS.

Ça à l'air de tourner correctement je vais vérifier semaine prochaine.
Je passe en résolu pour pas vous embêtez plus longtemps avec ce problème
merci pour votre aide
Répondre