Depuis ma base de données j'ai réalisé une interface via AutoIt, merci au forum
Pas de soucis pour le multi destinataires via le passage d'un fichier des destinataires en paramètres
Pas de soucis pour le multi pièces jointes via les positionnements à la souris selon l'interface web et l'envoi de l'emplacement
Je buttais sur l'envoi de textes !
Mes textes comportants souvent des retours à la ligne, ceux-ci étaient interprétés pour les MMS, WhatsApp ... par l'envoi d'un ENTER et donc d'in nouveau message... 15 retours à la ligne = 15 messages ! avec un bip à chaque fois sur le portable du destinataire... Cela aurait été très dur à supporté pour leurs oreilles sensibles.
Après pas mal d'essais voici la formule qui fonctionne !
send(StringRegExpReplace($sFileReadTexte, chr(13), "^" ))
avec $sFileReadTexte le texte lu dans le fichier Texte passé en paramètre
Exemple pour WhatsApp
;______________________________________________________WhatsApp
#include "C:\ASCPRS_Application\AutoIt\AutoIt3\Include\MsgBoxConstants.au3"
#include "C:\ASCPRS_Application\AutoIt\AutoIt3\Include\GUIConstantsEx.au3"
#include "C:\ASCPRS_Application\AutoIt\AutoIt3\Include\Array.au3"
; https://www.autoitscript.com/forum/topic/154439-chrome-udf/
; les paramètres en entrée de ce programme AutoIt
$NbreParam= UBound($CmdLine) - 1
;MsgBox($MB_SYSTEMMODAL, "Nbre Param : ", $NbreParam,4)
;
$Dest = $CmdLIne[1] ; le fichier texte des destinataires; 1 par ligne
;MsgBox($MB_SYSTEMMODAL, "Liste Gest : ", $Dest,4)
$Emetteur = $CmdLIne[2] ; l'émetteur du message
;MsgBox($MB_SYSTEMMODAL, "Emetteur : ", $Emetteur,4)
$Objet = $CmdLIne[3] ; l'émetteur du message
;MsgBox($MB_SYSTEMMODAL, "Objet : ", $Objet,4)
$Texte = $CmdLIne[4] ; le texte du message ( c'est le même pour chaque destinataire)
;MsgBox($MB_SYSTEMMODAL, "Texte : ", $Texte,4)
; Vérifie si l'ouverture du fichier des destinataires est OK pour la lecture
$FileDest = FileOpen($Dest, 0) ; le chemin complet de la liste des destinataires, un destinataire par ligne, format texte .txt
If $FileDest = -1 Then
MsgBox(0, "Error", "Impossible Ouvrir Fichier Destinataires.")
Exit
EndIf
; Vérifie si l'ouverture du fichier du Texte est OK pour la lecture
if $Texte <> "_" then
$FileTexte = FileOpen($Texte, 0) ; le chemin complet de la liste du Texte, format .txt
If $FileTexte = -1 Then
MsgBox(0, "Error", "Impossible Ouvrir Fichier Texte.")
Exit
else
$sFileReadTexte = FileRead($FileTexte)
EndIf
endif
; Pour l'envoi potentiel à un grand nombre de destinataires il est préférable d'avoir déjà ouvert l'interface WEB
;On active Chrome Whatsapp
WinActivate("[CLASS:Chrome_WidgetWin_1]")
; Run("C:\Program Files\Google\Chrome\Application\chrome.exe https://web.whatsapp.com/")
sleep (4000) ; long d'attendre pour savoir si l'interface est ouvert, il manque vraiment une gestion des onglets sous AutoIt
Local $hWnd = WinWaitActive("[ACTIVE]","","12")
sleep (2000)
;WinSetState("[ACTIVE]", "", @SW_MAXIMIZE)
WinSetState($hWnd, "", @SW_MAXIMIZE)
; MsgBox($MB_SYSTEMMODAL, "Page Web : ", $hWnd,4)
;Exit
; Position Pointeur sur fenêtre "WhatsApp"
;destinataire 200,200 numéro international + enter
;Frappe du Texte : le saisir puis Enter
;Sélectionner pièce Jointe 540, 765
; si photo 545, 700
; si autres extensions = documents
; 540, 500
;envoyer le nom du fichier et ENTER
; Envoi Message Enter
; Read in lines of text until the EOF is reached
While 1
$LineDest = FileReadLine($FileDest)
If @error = -1 Then ExitLoop
if StringMid ( $LineDest, 2, 15) >" " then
; Destinataire
; StringMid ( "string", start [, count = -1] )
$Destinataire = "+33" & StringMid ( $LineDest, 2 , 14)
MsgBox($MB_SYSTEMMODAL, "Destinataire : ", $Destinataire ,1)
MouseClick("left",200,200,1)
sleep (1000)
send ($Destinataire & "{ENTER}")
sleep (1000)
Send ("{ENTER}")
sleep (2000)
; Objet
send ($Objet)
sleep (500)
Send ("{Enter}") ; Retour à la ligne
sleep (500)
; Texte s'il existe
if $Texte <> "_" then
; Texte Message
send(StringRegExpReplace($sFileReadTexte, chr(13), "^" ))
Send ("{Enter}")
sleep (1000)
endif
; Pièces Jointes s'il y en a
For $i = 5 To $NbreParam
$PieceJointe = $CmdLine[$i]
if $PieceJointe> "" then
; si format JPG, JPEG, TIF, PNG, GIF
$a_myarray = StringSplit ("JPG, JPEG, TIF, PNG, GIF",",")
; StringInStr ( "string" , "substring" [, casesense = 0 [, occurrence = 1 [, start = 1 [, count]]]] )
$s_search = StringInStr ( $PieceJointe , "." , 0 , 1 , 1 , 4)
;MsgBox($MB_SYSTEMMODAL, "Extension : ", $s_search ,4)
$ret = _ArraySearch($a_myarray, $s_search)
MouseClick("left",545,770,1) ; trombonne
If $ret <> - 1 Then ; c'est une image
;MsgBox(0, "Found", "Element found in the array!")
MouseClick("left", 545, 700 ,1)
Else ; c n'est pas une image
;MsgBox(0, "Not Found", "Element Not found In the array!")
MouseClick("left", 545, 500 ,1)
EndIf
sleep (1000)
send ($PieceJointe)
sleep (1000)
Send ("{ENTER}")
; Envoyer à chaque pièce jointe sinon le + se déplace à chaque envoi ....
MouseClick("left", 1470, 765,1)
sleep (1000)
endif ; Pièce Jointe
Next
; Envoyer
Send ("{Enter}")
sleep (1000)
endif ; Destinataire non null
Wend
FileClose($FileDest)
; Ferme la fenêtre en utilisant le handle retourné par WinWait.
WinSetState($hWnd, "", @SW_MINIMIZE)
Exit
#include "C:\ASCPRS_Application\AutoIt\AutoIt3\Include\MsgBoxConstants.au3"
#include "C:\ASCPRS_Application\AutoIt\AutoIt3\Include\GUIConstantsEx.au3"
#include "C:\ASCPRS_Application\AutoIt\AutoIt3\Include\Array.au3"
; https://www.autoitscript.com/forum/topic/154439-chrome-udf/
; les paramètres en entrée de ce programme AutoIt
$NbreParam= UBound($CmdLine) - 1
;MsgBox($MB_SYSTEMMODAL, "Nbre Param : ", $NbreParam,4)
;
$Dest = $CmdLIne[1] ; le fichier texte des destinataires; 1 par ligne
;MsgBox($MB_SYSTEMMODAL, "Liste Gest : ", $Dest,4)
$Emetteur = $CmdLIne[2] ; l'émetteur du message
;MsgBox($MB_SYSTEMMODAL, "Emetteur : ", $Emetteur,4)
$Objet = $CmdLIne[3] ; l'émetteur du message
;MsgBox($MB_SYSTEMMODAL, "Objet : ", $Objet,4)
$Texte = $CmdLIne[4] ; le texte du message ( c'est le même pour chaque destinataire)
;MsgBox($MB_SYSTEMMODAL, "Texte : ", $Texte,4)
; Vérifie si l'ouverture du fichier des destinataires est OK pour la lecture
$FileDest = FileOpen($Dest, 0) ; le chemin complet de la liste des destinataires, un destinataire par ligne, format texte .txt
If $FileDest = -1 Then
MsgBox(0, "Error", "Impossible Ouvrir Fichier Destinataires.")
Exit
EndIf
; Vérifie si l'ouverture du fichier du Texte est OK pour la lecture
if $Texte <> "_" then
$FileTexte = FileOpen($Texte, 0) ; le chemin complet de la liste du Texte, format .txt
If $FileTexte = -1 Then
MsgBox(0, "Error", "Impossible Ouvrir Fichier Texte.")
Exit
else
$sFileReadTexte = FileRead($FileTexte)
EndIf
endif
; Pour l'envoi potentiel à un grand nombre de destinataires il est préférable d'avoir déjà ouvert l'interface WEB
;On active Chrome Whatsapp
WinActivate("[CLASS:Chrome_WidgetWin_1]")
; Run("C:\Program Files\Google\Chrome\Application\chrome.exe https://web.whatsapp.com/")
sleep (4000) ; long d'attendre pour savoir si l'interface est ouvert, il manque vraiment une gestion des onglets sous AutoIt
Local $hWnd = WinWaitActive("[ACTIVE]","","12")
sleep (2000)
;WinSetState("[ACTIVE]", "", @SW_MAXIMIZE)
WinSetState($hWnd, "", @SW_MAXIMIZE)
; MsgBox($MB_SYSTEMMODAL, "Page Web : ", $hWnd,4)
;Exit
; Position Pointeur sur fenêtre "WhatsApp"
;destinataire 200,200 numéro international + enter
;Frappe du Texte : le saisir puis Enter
;Sélectionner pièce Jointe 540, 765
; si photo 545, 700
; si autres extensions = documents
; 540, 500
;envoyer le nom du fichier et ENTER
; Envoi Message Enter
; Read in lines of text until the EOF is reached
While 1
$LineDest = FileReadLine($FileDest)
If @error = -1 Then ExitLoop
if StringMid ( $LineDest, 2, 15) >" " then
; Destinataire
; StringMid ( "string", start [, count = -1] )
$Destinataire = "+33" & StringMid ( $LineDest, 2 , 14)
MsgBox($MB_SYSTEMMODAL, "Destinataire : ", $Destinataire ,1)
MouseClick("left",200,200,1)
sleep (1000)
send ($Destinataire & "{ENTER}")
sleep (1000)
Send ("{ENTER}")
sleep (2000)
; Objet
send ($Objet)
sleep (500)
Send ("{Enter}") ; Retour à la ligne
sleep (500)
; Texte s'il existe
if $Texte <> "_" then
; Texte Message
send(StringRegExpReplace($sFileReadTexte, chr(13), "^" ))
Send ("{Enter}")
sleep (1000)
endif
; Pièces Jointes s'il y en a
For $i = 5 To $NbreParam
$PieceJointe = $CmdLine[$i]
if $PieceJointe> "" then
; si format JPG, JPEG, TIF, PNG, GIF
$a_myarray = StringSplit ("JPG, JPEG, TIF, PNG, GIF",",")
; StringInStr ( "string" , "substring" [, casesense = 0 [, occurrence = 1 [, start = 1 [, count]]]] )
$s_search = StringInStr ( $PieceJointe , "." , 0 , 1 , 1 , 4)
;MsgBox($MB_SYSTEMMODAL, "Extension : ", $s_search ,4)
$ret = _ArraySearch($a_myarray, $s_search)
MouseClick("left",545,770,1) ; trombonne
If $ret <> - 1 Then ; c'est une image
;MsgBox(0, "Found", "Element found in the array!")
MouseClick("left", 545, 700 ,1)
Else ; c n'est pas une image
;MsgBox(0, "Not Found", "Element Not found In the array!")
MouseClick("left", 545, 500 ,1)
EndIf
sleep (1000)
send ($PieceJointe)
sleep (1000)
Send ("{ENTER}")
; Envoyer à chaque pièce jointe sinon le + se déplace à chaque envoi ....
MouseClick("left", 1470, 765,1)
sleep (1000)
endif ; Pièce Jointe
Next
; Envoyer
Send ("{Enter}")
sleep (1000)
endif ; Destinataire non null
Wend
FileClose($FileDest)
; Ferme la fenêtre en utilisant le handle retourné par WinWait.
WinSetState($hWnd, "", @SW_MINIMIZE)
Exit