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
Code : Tout sélectionner
#include <AutoItConstants.au3>
WinActive ("Inform")
ControlClick("Inform","","[CLASS:TreeViewWndClass]","Left",1,144,8)
ControlClick("Inform","","[CLASS:ThunderRT6CommandButton; INSTANCE:14]")
WinWaitActive ("Inform [ Ts sites ]")
ControlClick("Inform [ Ts sites ]","","[CLASS:ThunderRT6ComboBox; INSTANCE:1]")
SEND("{DOWN 5}")
SEND("{ENTER}")
ControlClick("Inform [ Ts sites ]","","[CLASS:ThunderRT6CommandButton; INSTANCE:1]")
WinWaitActive ("Inform Aperçu rapport invent")
ControlClick("Inform Aperçu rapport invent","","[CLASS:ToolbarWindow32]","Left",1,254,15)
if WinActive ("Adresse de messagerie") Then
ControlClick("Adresse de messagerie","","[CLASS:Button; INSTANCE:1]")
EndIf
WinWaitActive ("Export")
ControlClick("Export","","[CLASS:Static; INSTANCE:3]","Left",1,194,34)
SEND("{T}")
SEND("{E}")
SEND("{ENTER}")
ControlClick("Export","","[CLASS:Button; INSTANCE:1]")
WinWaitActive ("Choose Export File")
ControlClick("Choose Export File","","[CLASS:SysTreeView32]","Left",1,58,41)
ControlClick("Choose Export File","","[CLASS:Button; INSTANCE:1]")
if WinActive ("File already exists") Then
SEND("{ENTER}")
EndIf
if FileExists("C:\Users\RFRA9999\Desktop\inventor.txt") Then
FileCopy("C:\Users\RFRA9999\Desktop\inventor.txt", "C:\Inform\Rapports\RapportJauges-"&@MDAY&"-"&@MON&"-"&@YEAR&".txt", 1)
FileDelete("C:\Users\RFRA9999\Desktop\inventor.txt")
EndIf
sleep (100)
;##################################
; Include Script trouver sur le forum
;##################################
#Include<file.au3>
;##################################
; Variables
;##################################
$SmtpServer = "" ; address for the smtp-server to use - REQUIRED
$FromName = "" ; name from who the email was sent
$FromAddress = "" ; address from where the mail should come
$ToAddress = "" ; destination address of the email - REQUIRED
$Subject = "" ; subject from the email - can be anything you want it to be
$Body = "" ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = "C:\Inform\Rapports\RapportJauges-"&@MDAY&"-"&@MON&"-"&@YEAR&".txt" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
$CcAddress = "" ; address for cc - leave blank if not needed
$BccAddress = "" ; address for bcc - leave blank if not needed
$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
$Username = "" ; username for the account used from where the mail gets sent - REQUIRED
$Password = "" ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = ; port used for sending the mail
$ssl = ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort= ; GMAIL port used for sending the mail
;~ $ssl= ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS
;##################################
; Script
;##################################
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$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)
EndIf
;
; The UDF
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
Local $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])
;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
$objEmail.AddAttachment($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
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
If Number($IPPort) = 0 then $IPPort = 25
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
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
;Update settings
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
Case "Normal"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
Case "Low"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
EndSwitch
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail=""
EndFunc ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
$HexNumber = Hex($oMyError.number, 8)
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description, 3)
ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
SetError(1); something to check for when this function returns
Return
EndFunc ;==>MyErrFunc
WinClose ("Inform Aperçu rapport invent")
WinClose ("Inform [ Ts sites ]")


