Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1939 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Quel langage pour automatiser des tâches dans une application

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Quel langage pour automatiser des tâches dans une application

n°2297808
Madadayo
Posté le 16-03-2017 à 21:57:34  profilanswer
 

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
mood
Publicité
Posté le 16-03-2017 à 21:57:34  profilanswer
 

n°2297810
rufo
Pas me confondre avec Lycos!
Posté le 16-03-2017 à 22:32:02  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2297811
Madadayo
Posté le 16-03-2017 à 23:14:12  profilanswer
 

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
n°2297825
aldo13000
Posté le 17-03-2017 à 09:40:58  profilanswer
 

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


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

n°2297834
rufo
Pas me confondre avec Lycos!
Posté le 17-03-2017 à 11:15:38  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2297887
Madadayo
Posté le 18-03-2017 à 09:56:59  profilanswer
 

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
n°2297900
h3bus
Troll Inside
Posté le 18-03-2017 à 18:05:43  profilanswer
 

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


---------------
sheep++
n°2297911
Madadayo
Posté le 19-03-2017 à 06:29:23  profilanswer
 

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
n°2297917
rufo
Pas me confondre avec Lycos!
Posté le 19-03-2017 à 14:32:47  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2297921
h3bus
Troll Inside
Posté le 19-03-2017 à 16:18:18  profilanswer
 

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


---------------
sheep++
mood
Publicité
Posté le 19-03-2017 à 16:18:18  profilanswer
 

n°2297947
rufo
Pas me confondre avec Lycos!
Posté le 20-03-2017 à 09:45:48  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2297993
Madadayo
Posté le 20-03-2017 à 17:59:30  profilanswer
 

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
n°2297996
rufo
Pas me confondre avec Lycos!
Posté le 20-03-2017 à 20:14:36  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2298328
Madadayo
Posté le 28-03-2017 à 22:57:50  profilanswer
 

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
n°2298648
Madadayo
Posté le 03-04-2017 à 22:15:57  profilanswer
 

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
n°2298649
rat de com​bat
attention rongeur méchant!
Posté le 03-04-2017 à 22:27:35  profilanswer
 

Au pif:

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

n°2298653
Madadayo
Posté le 03-04-2017 à 22:55:58  profilanswer
 

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
n°2298655
rat de com​bat
attention rongeur méchant!
Posté le 03-04-2017 à 22:59:21  profilanswer
 

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
n°2298791
Madadayo
Posté le 05-04-2017 à 18:01:30  profilanswer
 

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
n°2298792
rat de com​bat
attention rongeur méchant!
Posté le 05-04-2017 à 18:11:32  profilanswer
 

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.

n°2298802
Madadayo
Posté le 06-04-2017 à 00:03:24  profilanswer
 

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
n°2298825
rufo
Pas me confondre avec Lycos!
Posté le 06-04-2017 à 10:56:16  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2298875
Madadayo
Posté le 06-04-2017 à 18:25:22  profilanswer
 

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
n°2298879
Madadayo
Posté le 06-04-2017 à 19:27:55  profilanswer
 

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
n°2298931
rat de com​bat
attention rongeur méchant!
Posté le 08-04-2017 à 20:25:16  profilanswer
 

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?

n°2298934
rufo
Pas me confondre avec Lycos!
Posté le 08-04-2017 à 22:30:21  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299182
Madadayo
Posté le 13-04-2017 à 00:18:13  profilanswer
 

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
n°2299188
rufo
Pas me confondre avec Lycos!
Posté le 13-04-2017 à 09:47:48  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Quel langage pour automatiser des tâches dans une application

 

Sujets relatifs
Application de detection de mouvementQuel langage pour reparation toute carte
Macro qui lance application avec Utilisateur et mdp[Batch] Lancer un application avec control
Meilleur language pour une application android bien préciselangage c et liste chainee
android (JAVA) redémarrer application avec boutonFermer une application quand une autre se ferme ?? Need help
Langage d'avenirApplication mobile en native ou hybride
Plus de sujets relatifs à : Quel langage pour automatiser des tâches dans une application


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR