Exécution d'une macro sans impacter l'utilisateur

Résolu/Fermé
Enygma - Modifié le 5 oct. 2021 à 12:30
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 15 oct. 2021 à 11:33
Bonjour,

Je suis en train de crée un programme qui doit remplir automatiquement des champs de caractères qui se trouve dans un logiciel (comme remplir les cases d'un identifient et d'un mot de passe pour pouvoir se connecter.) Jusque-là, j'ai utilisé la bibliothèque
pyautogui
, et je n'ai pas du problème.

Je voudrais savoir s'il est possible d'exécuter une macro ''sans impacter l'utilisateur''. Ce que j'entends par là, c'est que lorsque une macro est exécutée, celle-ci fait bouger la souris et empêche donc de faire quelque chose à côté. Ma question et donc : est-ce que ça serait possible d'exécuter une macro sans avoir le désagrément de la souris ?

J'avais pensé exécuter le programme en arrière plan, ou sur une machine virtuelle, mais ça ne me parait pas très concluant...
Voici le code que j'utilise. Pour l'instant, son rôle est d'ouvrir word et écrire Hello World !. Ceci n'est qu'un test pour voir comment régler le problème de la souris.

import pyautogui
import time

def coord():
    time.sleep(8)
    print(pyautogui.position())

pyautogui.click(197, 751)
time.sleep(2)
pyautogui.write('word pad')
pyautogui.click(182, 213)
#coord()


J'attend vos réponse avec impatience !
A voir également:

2 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
Modifié le 5 oct. 2021 à 12:38
Bonjour,

Peut-être en utilisant les raccourcis claviers appropriés (e.g. tab pour changer l'élément sélectionné, entrée pour l'activer, etc). Mais tu ne pourras pas empêcher l'utilisateur d'interférer avec son clavier ou sa souris. Le plus simple est peut être de lui dire de ne toucher à rien au moment où il exécute ton programme. C'est d'ailleurs pour ça qu'en général on évite de scripter quelque chose en rapport avec une interface graphique.

En fait, tout dépend de ce que tu veux faire et avec quel système d'exploitation. Par exemple :
  • Sous Linux / MacOS, la plupart des actions qu'on pourrait imaginer sont directement scriptables avec un script shell.
  • Sous Windows, tu as un équivalent (dégradé) avec les scripts batch.


Ceci amène d'ailleurs un point important : le genre de chose que tu fais pourrait être utilisé à de mauvaises fins. C'est la raison pour laquelle il ne pas lancer un script en lequel on n'a pas confiance.

Bonne chance
0
Bonjour mamiemando,

Finalement j'ai trouvé une alternative, toutefois j'ai un nouveau un problème...
J'aimerais savoir si il est possible d'interagir avec un fichier exécutable exe du genre de kafeo (c'est un logiciel pour créer des devis), avec le cmd, où le shell.
En gros comment est-ce que je pourrais interagir avec ce type de logiciel à partir du cmd (du genre remplire des champs de texte, un peux a la manière d'un macro mais sans l'inconvénient du mouvementde souris...).
J'ai vite fait regarder comment arriver à faire ça, et j'ai vu il fallait éventuellement récupérer les valeurs de sortie du logiciel pour connaître les balises des composants et les placer dans un document texte pour ensuite le mettre comme argument à l'exécution de celui-ci mais sa me paraîtun peut tiré par les cheveux.

Si tu a une réponse je suis preneur !
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748 > Enygma
Modifié le 6 oct. 2021 à 11:23
Bonjour,

Ça dépend du logiciel. S'il existe une API réseau, un module python dédié, ou si l'exécutable en ligne de commande supporte des options permettant de remplir le formulaire oui.

Pour le dernier aspect, afficher l'aide de
kafeo
te donnera sûrement des indices (probablement
kafeo.exe /help
sous windows).

Sinon, (i.e. il ne te reste que l'interface graphique) il ne te reste plus que les solutions à la
pyautogui
.

Bonne chance
0
Enygma > mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024
Modifié le 11 oct. 2021 à 14:37
Bonsoir,

Ça fait 2 jours que j'essaye de comprendre le fonctionnement des arguments des fichiers exécutable, comment les récupérer, savoir à quoi ils correspondent puis les exécuter. J'ai d'ailleurs pour cela installé process explorer, mais je n'arrive pas à identifier les arguments dans toutes les valeurs qu'il me renvoie, toutefois je n'y arrive pas.

Je me demande si je ne me suis pas compliquée la vie pour rien. C'est pourquoi je vais vous dire mon but final comme ça vous pourrez peut-être m'éclairer.

Je voudrais tout simplement automatiser des logiciels (fichier exécutable) pour pouvoir les utilisés (du style créé un devis automatiquement avec kafeo (logiciel de création de devis)) avec des valeurs prédéfinis et si possible sans "déranger l'utilisateur".

En espérant avoir été claire.

Vos réponses sont plus que bien venue !
Merci pour votre aide
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
11 oct. 2021 à 15:08
Bonjour,

Avant de se lancer dans quelque chose de compliqué :

Ça fait 2 jours que j'essaye de comprendre le fonctionnement des arguments des fichiers exécutable, comment les récupérer

Tout logiciel, quel que soit le langage dans lequel il a été programmé, permet de recevoir de la part du système des arguments. Par exemple en python, tu récupères les paramètres dans
sys.argv
.

Exemple :
toto.py


#!/usr/bin/env python3
import sys

for (i, arg) in enumerate(sys.argv):
    print(i, arg)


Si on lance
python3 toto.py tata titi
, on obtient :

0 toto.py
1 tata
2 titi


Libre ensuite au développeur de faire réagir son programme en fonction de ces arguments.

La question c'est est-ce que
kafeo
a été codé pour réagir à des arguments passés en ligne de commande (ce qui n'est pas garanti). Si c'est le cas et si
kafeo
supporte effectivement des paramètres, ils sont supposés être documentés ou être affichable via l'aide (traditionnellement, sous linux, avec l'option
--help
et sous windows avec l'option
/help
, e.g.
kafeo.exe /help
).

En admettant que tu trouves cette information, il faut voir si un de ces paramètres répond à ton besoin (ce qui n'est pas garanti non plus).

J'ai d'ailleurs pour cela installé process explorer, mais je n'arrive pas à identifier les arguments dans toutes les valeurs qu'il me renvoie, toutefois je n'y arrive pas.

Ça ne t'aidera pas. Dans la table des processus, tu verras les éventuels paramètres passés au moment de lancer le programme (dans mon exemple
toto.py tata titi
) mais comme dans ton cas le devis est saisi après, il ne peut pas apparaître dans les arguments.

Je voudrais tout simplement automatiser des logiciels (fichier exécutable) pour pouvoir les utilisés (du style créé un devis automatiquement avec kafeo (logiciel de création de devis)) avec des valeurs prédéfinis et si possible sans "déranger l'utilisateur".

Pour moi les solutions (pas forcément réalisables, ça dépend du logiciel) sont :
  • chercher dans le logiciel une fonctionnalité pratique qui répond à ton besoin (e.g. les modèles de devis ?)
  • lancer kafeo en passant en argument ce qu'il faut (en admettant que kafeo expose les paramètres adéquats, ce qui est loin d'être garanti) ;
  • pré-construire par exemple un python un fichier de devis kafeo et lancer kafeo en passant en paramètre ce fichier (en admettant que le format soit "compréhensible" ou documenté) ;
  • considérer un logiciel plus pratique à automatiser (je n'en connais pas, ce n'est pas mon domaine).
  • adopter une approche à la
    pyautogui
    ;


Bonne chance
0
Bonjour mamiemando,

Merci pour ta réponse !
Je pense que je vais effectivement faire une approche à la
pyautogui
, même si je garde en tête ton conseil pour récupérer les arguments d'un programme ????.
J'avais penser à exectuer un code avec
pyautogui
sur un raspberry pi.
Je m'explique, je pensait installer tout mon programme sur un raspberry qui serait connecter à un ordinateur, comme ça le raspberry effectue le programme
pyautogui
qui ne dérange par conséquent pas l'utilisateur de l'ordinateur.
Toutefois je suis encore en recherche d'informations car je ne sais pas comment "activer" en programme en lui envoyant une valeur d'entrée depuis le pc auquel il sera connecté, et je ne sais pas non-plus comment envoyer cette valeur d'entrée ni la future valeur de sortie, même si je me doute que sa doit être le même principe.
Enfin bref j'espère que comme toujours vous pourrez m'aider.
En vous remerciant !

Enygma
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748 > Enygma
Modifié le 12 oct. 2021 à 12:04
Au risque d'insister, es-tu sûre que les modèles de devis (ou tout autre fonctionnalité approchante de ton logiciel) ne répondent pas à ton besoin ?

Bonne chance
0
Enygma > mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024
Modifié le 15 oct. 2021 à 11:33
Oui, sur ce fait ne t'inquiète pas.
0
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748 > Enygma
15 oct. 2021 à 11:33
Ok :-) Du coup, je clos le sujet, mais si jamais une autre question te vient, n'hésite pas à en ouvrir un nouveau. Bonne continuation :-)
0