PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → "Injecter" du texte dans un champ de saisie d'un autre logiciel
"Injecter" du texte dans un champ de saisie d'un autre logiciel
Iniciado por freeman.ben, 27,mar. 2006 18:28 - 5 respuestas
Publicado el 27,marzo 2006 - 18:28
Bonjour,

Je suis en plein développement de logiciel mais je me heurte à un problème que je vous explique ci-après :

Pour ajouter un article dans le logiciel Y, je dois cliquer sur un bouton puis entrer toutes les informations dans les champs de saisie de la fenêtre et enfin cliquer sur un bouton "enregistrer".

Cependant, je voudrais "automatiser" tout ca, c'est à dire :
- Simuler un clic sur le bouton "ajouter un article" de ce logiciel.
- Injecter du texte dans les champs de saisie
- Simuler un clic sur le bouton "Ajouter".

Je sais qu'il est possible via les API (il me semble) de récupérer toute les fenêtres ouverte à un instant T puis pouvoir lister tous les objets de cette fenêtre mais malheuresement, je ne sais pas faire ca.

Si quelqu'un pouvait me filer un coup de main

Merci
Publicado el 27,marzo 2006 - 18:48
salut

question bête : pourquoi ne pas faire un scénario avec WDTEST?
Publicado el 27,marzo 2006 - 18:49
Voir les fonctions :
EnumèreElément
EnumèreChamp
Aide à Enumérer

Egalement l'outil livré avec Windev WDTests.
Publicado el 27,marzo 2006 - 18:49
tu l'as révé, Windev le fait

Faire dans le menu ?
le guide
>application
> Exemple : WD Envoi touches

et tu as ce que tu veux (en mieux)
JD



Ben avait prétendu :
Bonjour,

Je suis en plein développement de logiciel mais je me heurte à un problème
que je vous explique ci-après :

Pour ajouter un article dans le logiciel Y, je dois cliquer sur un bouton
puis entrer toutes les informations dans les champs de saisie de la fenêtre
et enfin cliquer sur un bouton "enregistrer".

Cependant, je voudrais "automatiser" tout ca, c'est à dire :
- Simuler un clic sur le bouton "ajouter un article" de ce logiciel.
- Injecter du texte dans les champs de saisie
- Simuler un clic sur le bouton "Ajouter".

Je sais qu'il est possible via les API (il me semble) de récupérer toute les
fenêtres ouverte à un instant T puis pouvoir lister tous les objets de cette
fenêtre mais malheuresement, je ne sais pas faire ca.

Si quelqu'un pouvait me filer un coup de main

Merci


--
Publicado el 27,marzo 2006 - 20:52
J'ai réussit à lister toute les fenêtres ouverte sous windows et donc à récupérer le handle que je recherchais.
Maintenant est-ce que quelqu'un aurait une idée pour lister tout les composants de cette fenêtre ? (bouton, champ de saisie, etc...)

Tant qu'à faire si vous savez ensuite comment remplir un champ de saisie et cliquer sur un bouton, je suis prenneur.

Je signale au passage que l'autre appli n'est pas développé en windev et que l'exemple WD Envoi Touche ne répond pas à ce que je recherche

Merci à tous
Publicado el 28,marzo 2006 - 08:32
Bonjour,

Regardez les commandes :
Evenement
Postmessage()

Mais peut être un autre chemin peut vous sérvir : ( ou peut être une idée bête ? :( )

créez une variable globale
gRepTxt est une chaine=Ton repertoire d'interception des fichiers textes
créez un timer dans votre application 2 windev qui detecte la création d'1 nouveau fichier texte dans le repertoire gRepTxt

le fichier texte est envoyé par le 1er programme au meme repertoire ce fichier contient a chaque reprise le texte des articles a ajouter exp :"codeart;designation;codefamille;....;...; sur plusieur ligne et le fichier à chaque fois nomé "Fichier"+gauche(heuresys(),6) pour ne pas ecraser les anciens nouvelement créer puis dans le 2 eme programme à chaque fois que le timer detecte la presence d1 nouveau fichier txt le bloque puis lit ligne par ligne et envoie à la fentre article qui doit avoir à l'initialition :
procedure fenArt("Création",txt="",AjoutLigne=0)
si AjoutLigne=1
si txt<>""
codeart=extraitchaine(txt,1,";")
designation=extraitchaine(txt,2,";")
codefamille=extraitchaine(txt,3,";")
...
executetraitement(Valide,trtclic)
//n'oublier pas de fermer la fenetre à chaque création automatique d'article.
fin
fin

donc dans la procedure du timer on boucle sur les ligne du fichier texte et on fait :
LigneLue="texte de la 1ere ligne lue"
si fenetat(FicheArticle)=inexistante
ouvre(FenArticle,"Création",LigneLue,1)
sinon
//la fenetre d'article est ouverte
//on peut boucler jusqu'a la fermeture de celle-ci puis la ré-ouvrir à nouveau
fin

puis à chaque fin de traitement supprime le ficheir texte traité.

et pour l'ouverture normal sans validation de la fenetre article on fait :

ouvre(FenArticle)

Bon Dev.

Ali Hindi : AliDev7@yahoo.fr