Quel langage pour automatiser des tâches dans une application

Quel langage pour automatiser des tâches dans une application - Divers - Programmation

Marsh Posté le 16-03-2017 à 21:57:34    

Salut,
J'utilise cette application au taf :  
 
http://i.imgur.com/eVucN3t.png
 
Pour faire simple, l'application une fois ouverte, je tape :
Une série de chiffres > Entrée > Une série de chiffres > Entrée > 7 *tabulation* 78654 > Entrée > Une série de chiffres > Entrée > F10
 
Chaque jour, on me donne une liste de 10 numéros à rentrer de cette façon, un numéro correspondant à la dernière série de chiffres dans mon exemple.  
Mon idée serait donc d'écrire un petit fichier où je n'aurais qu'à copier coller mes 10 numéros tous les jours.
Bon, ok obviously, j'suis un noob total en langage informatique. Et je demande pas à ce qu'on fasse le boulot pour moi.
Si vous pouviez simplement m'orienter vers le langage le plus simple pour faire cela, j'irai ensuite m'atteler à la compréhension de ce langage  [:the bloodhound gang]


---------------
Script Anti-HS
Reply

Marsh Posté le 16-03-2017 à 21:57:34   

Reply

Marsh Posté le 16-03-2017 à 22:32:02    

AutoIt est bien pour automatiser des tâches ou piloter des applis sous Windows.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-03-2017 à 23:14:12    

Oublié de préciser : je suis pas administrateur système sur mon poste. Du coup, je ne peux pas installer de nouvelles apps.
Mais j'imagine que ca reste faisable via un petit script  [:transparency]  
Tain, c'est compliqué quand on n'y connait rien  [:rogr]


---------------
Script Anti-HS
Reply

Marsh Posté le 17-03-2017 à 09:40:58    

Peut-être possible , si c'est pas désactivé, avec du VBS ( utiliser sendkeys)


---------------

Reply

Marsh Posté le 17-03-2017 à 11:15:38    

Ben tu prends la version portable d'AutoIt : https://www.portablefreeware.com/?id=50


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-03-2017 à 09:56:59    

rufo a écrit :

Ben tu prends la version portable d'AutoIt : https://www.portablefreeware.com/?id=50


Bah ouais la version portable, j'suis vraiment teubé.
J'essaie de capter le fonctionnement d'AutoIt. Merci !

 

Cela étant, j'ai fait une découverte intéressante hier : l'application en question permet d'enregistrer/executer des macros.
Du coup, j'ai enregistré ce que je tape habituellement.
Ca ressemble à ça :

Citation :

Code :
  1. Insert("ABCD[Enter]";)
  2. if(Receive (80,"VALIDATION" ) <> 1 ) Then GoTo Erreur
  3. Insert("3[Enter]";)
  4. if(Receive (80,"VALIDATION" ) <> 1 ) Then GoTo Erreur
  5. Insert("lemonde[Enter]";)
  6. if(Receive (80,"FIN" ) <> 1 ) Then GoTo Erreur
  7. Insert("2[Tab]";)
  8. Insert("12345[Enter]";)
  9. if(Receive (80,"ral" ) <> 1 ) Then GoTo Erreur
  10. Insert("[Tab]";)
  11. Insert("12345678[Enter]\"
  12. Insert(\"[Tab]\"
  13. Insert(\"2PR''l''''''''''k [Enter]\"
  14. if(Receive (80,\"PAR\" ) <> 1 ) Then GoTo Erreur
  15. Insert(\"[PF10]\"
  16. if(Receive (80,\"ENREGISTRE\" ) <> 1 ) Then GoTo Erreur
  17. Insert(\"[PF3]\"
  18. if(Receive (80,\"FIN\" ) <> 1 ) Then GoTo Erreur
  19. Insert(\"1[Enter]\"
  20. if(Receive (80,\"ral\" ) <> 1 ) Then GoTo Erreur
  21. Insert(\"12345678[Enter]";)
  22. Insert("[Tab]";)
  23. Insert("20[Enter]";)
  24. if(Receive (80,"PAR" ) <> 1 ) Then GoTo Erreur
  25. Insert("[PF10]";)
  26. if(Receive (200,"ENREGISTRE" ) <> 1 ) Then GoTo Erreur
  27. Exit ()
  28. Erreur:
  29. MsgBox ( "Erreur !" )


 

 

Question conne encore, mais c'est quel langage cette macro ? Là, mon exemple, c'est le cas de figure où je ne rentre qu'un seul numéro, le 12345678. Or, mon souci est que je ne rentre pas toujours le même nombre de numéro.
Je voudrais adapter ma macro pour qu'elle fonctionne quelque soit le nombre de numéro que j'ai à rentrer.  [:transparency]


Message édité par madadayo le 28-03-2017 à 23:55:48

---------------
Script Anti-HS
Reply

Marsh Posté le 18-03-2017 à 18:05:43    

C'est du VBS.
 
Ou se trouve le numéro que tu as à rentrer?


---------------
sheep++
Reply

Marsh Posté le 19-03-2017 à 06:29:23    

Dans une autre application. Une application interne dérivée d'internet Explorer j'ai l'impression.
Le client m'envoie une liste d'opérations dans un fichier image. A partir du numéro de l'opération je vais chercher sa référence dans l'application interne. Et ce que j'appelle le numéro, c'est cette référence.
Le souci étant que le client ne m'envoie pas toujours le même nombre d'opérations.


Message édité par madadayo le 19-03-2017 à 06:55:07

---------------
Script Anti-HS
Reply

Marsh Posté le 19-03-2017 à 14:32:47    

Je te déconseille le mode d'enregistrement. Ca fait pas du code propre. Après, si ton nb à rentrer est variable, t'as plusieurs façons de le renseigner : via une petite IHM que tu te construits avec AutoIt, via une valeur stockée dans un fichier texte ou une clé de base de registre, voire une valeur stockée dans un champ d'une IHM d'application ouverte au moment de l'exécution de la macro.
 
A noter qu'AutoIt te permet, via son inspecteur d'objets, de récupérer les ID des contrôles qui composent une IHM d'appli. Tu peux alors t'amuser à afficher/masquer des éléments de cette IHM ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-03-2017 à 16:18:18    

La difficultés va être d'interpréter l'image.
Via OCR, mais ça ne va pas être facile.


---------------
sheep++
Reply

Marsh Posté le 19-03-2017 à 16:18:18   

Reply

Marsh Posté le 20-03-2017 à 09:45:48    

Ah zut, j'avais pas vu que c'était une image. Oui, effectivement, ça va être chaud. :/ A voir si le client ne peut pas plutôt envoyer un fichier CSV.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-03-2017 à 17:59:30    

Ouais malheureusement, on n'est pas autorisés à recevoir autre chose qu'un fichier image de  la part du client . Je connaissais pas le principe de l'OCR. J'ai testé ce midi en utilisant un site (basé sur abbyy). Ça m'a l'air de fonctionner.  
Dans le même temps, je lis un tuto sur autoit. Ça va me prendre du temps, mais ça m'a l'air très utile.  
Pour l'instant, je pige pas comment faire pour qu'un script s'applique à une application en particulier voire à plusieurs. A voir.  
Je lis le tuto sur openclassrooms.com


---------------
Script Anti-HS
Reply

Marsh Posté le 20-03-2017 à 20:14:36    

Ca va fonctionner par l'envoi de raccourcis clavier. Tu rends actif la fenêtre de l'apli à piloter et tu lui envoies des touches clavier (genre pour ouvrir un menu, rentrer une valeur dans un champ... La touche TAB va être ton amie ;) Tu vas découvrir que la touche = permet de cocher des cases... Bref, tu va voir qu'on peut piloter un PC et des applis sans souris.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-03-2017 à 22:57:50    

Concernant tesseract pour l'OCR, c'est possible de l'installer sans être admin ?


Message édité par madadayo le 28-03-2017 à 22:58:27

---------------
Script Anti-HS
Reply

Marsh Posté le 03-04-2017 à 22:15:57    

Je reviens vers vous sur un aspect qui me bloque.
La référence que je souhaite obtenir se trouve dans une info-bulle qui n'apparait qu'au survol d'un élément de la fenêtre sur mon application dérivée d'internet explorer.
Et en plus, la référence n'est qu'une partie de ce qui est affiché dans l'info-bulle.
Donc je me suis dit qu'il fallait passer par le code source de la page.
Code source où j'obtiens la référence dans une ligne du type :

 

<span id="sippComponent198584_41_valeur" class="prop_val">17032939201300007483</span>

 

Donc je me suis dit, j'utilise la fonction _stringbetween sous la forme :

$array = _StringBetween($Texte, "sippComponent198584_41_valeur" class="prop_val">", "</span>" )

 

$reference = _ArrayToString($array)

 

Sauf que ca me retourne une erreur sur la ligne du stringbetween. Donc je me plante quelque part. Les guillemets posent problème ?

 

D'autre part, j'ai l'impression que je pourrais me servir de la fonction _IEGetObjById sauf que je ne comprends pas du tout comment l'utiliser. [:transparency] Comment je spécifie que c'est la page active qui est concernée [:transparency]


Message édité par madadayo le 03-04-2017 à 22:19:19

---------------
Script Anti-HS
Reply

Marsh Posté le 03-04-2017 à 22:27:35    

Au pif:

Code :
  1. $array = _StringBetween($Texte, "sippComponent198584_41_valeur\" class=\"prop_val\">", "</span>" )

Reply

Marsh Posté le 03-04-2017 à 22:55:58    

Ok, J'obtiens un message d'erreur en utilisant ta technique [:transparency]. Par contre, avec  

$array = _StringBetween($Texte, 'sippComponent198584_41_valeur" class="prop_val">', '</span>' )


Ca a l'air de fonctionner. Affaire à suivre


---------------
Script Anti-HS
Reply

Marsh Posté le 03-04-2017 à 22:59:21    

Possible le message d'erreur, il y a différentes façons de faire selon les logiciels/languages/... Utiliser des "simple quotes" c'est parfois une solution aussi.

 

edit: mot clé pour une eventuelle recherche: (anglais) escape / escaping quotes in $logiciel (ou ce genre de truc)


Message édité par rat de combat le 03-04-2017 à 23:00:08
Reply

Marsh Posté le 05-04-2017 à 18:01:30    

Là, je suis bien embêté. je voulais retrouver ma référence avec l'id sippComponent198584_41_valeur.
Sauf que j'ai testé sur plusieurs exemples et l'id change à chaque fois sur la page source. Un coup c'est


<span id="sippComponent198584_41_valeur" class="prop_val">17032939201300007483</span>


Un coup :  

<span id="sippComponent897564_41_valeur" class="prop_val">17032939201300007546</span>


 
Je pensais naïvement que le numéro était fixe. Du coup, je ne sais pas trop comment capturer cette référence.
Elle n'apparait qu'à cet endroit sur ma page source. Cela dit, elle commence toujours par 17 et contient 20 caractères. Et se trouve toujours sur la même ligne  [:transparency]    
Mais serait-ce optimal comme critère  [:transparency]


---------------
Script Anti-HS
Reply

Marsh Posté le 05-04-2017 à 18:11:32    

Le moteur de recherche me dit que AutoIt comprend les RegEx: https://www.autoitscript.com/autoit [...] RegExp.htm
 
Je connais les RegEx (enfin les bases :o ) mais pas ce logiciel, je ne peux donc pas te dire comment faire exactement par contre...
 
Ah oui, kesako "RegEx"? --> https://fr.wikipedia.org/wiki/Expression_rationnelle C'est un truc assez complexe dans son intégralité mais simple sur le principe. P.ex. ton id peut se décrire sippComponent\d{6}_41_valeur, \d représente un chiffre et {6} veut dire qu'il en faut 6 exactement.

Reply

Marsh Posté le 06-04-2017 à 00:03:24    

Excellent  [:bien]  
Du coup, la partie de code suivante est-elle correcte ?
 

#include <File.au3>
 
#include <Array.au3>
 
#include <String.au3>
 
#include <IE.au3>
 
 
...
 
$sipp = "sippComponent\d{6} _41_valeur"  
 
...
 
$invalid = _IEGetObjById ("[ACTIVE]", $sipp)
 
 
$reference = _IEPropertyGet($invalid, "innertext" )
 
$hFileOpen = FileOpen("C:\Users\hahaha\Desktop\test.txt", $FO_APPEND)
 
FileWrite($hFileOpen, $reference)


 


---------------
Script Anti-HS
Reply

Marsh Posté le 06-04-2017 à 10:56:16    

A priori oui, mais ça serait bien de déclarer les variables en local.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 06-04-2017 à 18:25:22    

Je pige pas. Avec ce code  

LOCAL $invalid = _IEGetObjById("[ACTIVE]", "sippComponent476491_41_valeur" )
 
 
 
LOCAL $reference = _IEPropertyGet($invalid, "innertext" )
 
LOCAL $hFileOpen = FileOpen("C:\Users\d\Desktop\2test.txt", $FO_APPEND)
 
FileWrite($hFileOpen, $reference)


 
J'obtiens un zéro dans mon fichier texte. J'ai vérifié dans mon test, l'id est bien sippComponent476491_41_valeur.


---------------
Script Anti-HS
Reply

Marsh Posté le 06-04-2017 à 19:27:55    

Je me demande si ce n'est pas lié.
Y a un détail que je ne comprends  pas.
Le raccourci clavier ctrl u n'affiche pas la même chose que le lien dans le menu contextuel "afficher la source".

 

La ligne où se trouve ma référence ne se voit pas en utilisant le raccourci clavier


Message édité par madadayo le 06-04-2017 à 19:28:32

---------------
Script Anti-HS
Reply

Marsh Posté le 08-04-2017 à 20:25:16    

madadayo a écrit :

Je pige pas. Avec ce code  

LOCAL $invalid = _IEGetObjById("[ACTIVE]", "sippComponent476491_41_valeur" )
 
 
 
LOCAL $reference = _IEPropertyGet($invalid, "innertext" )
 
LOCAL $hFileOpen = FileOpen("C:\Users\d\Desktop\2test.txt", $FO_APPEND)
 
FileWrite($hFileOpen, $reference)


 
J'obtiens un zéro dans mon fichier texte. J'ai vérifié dans mon test, l'id est bien sippComponent476491_41_valeur.

Sans connaitre AutoIt, l'appel de _IEGetObjById me paraît déjà douteux. Dans la doc c'est indiqué que le premier paramètre doit être un Object variable of an InternetExplorer.Application, Window or Frame object, ce "[ACTIVE]" me paraît être autre chose non?

Reply

Marsh Posté le 08-04-2017 à 22:30:21    

Effectivement, il faut créer un objet OLE d'IE : https://www.autoitscript.com/autoit [...] xample.htm


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-04-2017 à 00:18:13    

J'arrive pas à trouver comment spécifier que c'est la fenêtre active qui est concernée par _IEGetObjById  [:transparency]  
Les fonctions _IEcreate ou _IEnavigate, on part de rien, on lance une url.  
Or, dans mon cas de figure, y a pas d'url (parce que l'application en question, dérivée d'IE, ne peut être utilisée que dans le cadre de mon application)
Si j'utilise l'url et une fonction du style iecreate, ça va me créer une nouvelle fenetre IE, je vais avoir un message d'erreur.
Bref donc faudrait que mon code ressemble à ça :
 


$oIE = "la fenêtre active"
 
LOCAL $invalid = _IEGetObjById($oIE, "sippComponent476491_41_valeur" )
 
 
 
LOCAL $reference = _IEPropertyGet($invalid, "innertext" )
 


 
Et je vois pas comment nommer "la fenêtre active"


---------------
Script Anti-HS
Reply

Marsh Posté le 13-04-2017 à 09:47:48    

Si tu lis la doc comme je l'ai fait (cf mon post précédent), $oIE est un objet ! Donc va sur le lien que j'ai mis. :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed