champs Grisé

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

champs Grisé

#1

Message par yohanb767 »

Bonjour à tous et avant tout Bonne Année !

je suis débutant donc pas mal de question et de recherche pour écrire un script mais il y a quelque chose ou je bute vraiment c'est que j'ai dans une page
d'un programme de saisie de donnée différent champs à remplir qui sont très récurant donc j'ai écris un petit script (une sorte d'automatisation)
afin de remplir plus vite mon document
mais j'aurai aimé savoir si un champs qui est renseigné mais grisé peu être enregistrer comme variable afin de faire apparaître son contenant dans une fenêtre

j'espère avoir été aussi clair que possible et merci d'avance pour votre aide

Yohan
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: champs Grisé

#2

Message par walkson »

Bonjour et bonne année
Un petit exemple que l'on peut faire et obtenir
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 423, 182, 192, 124)
Global $Input1 = GUICtrlCreateInput("", 16, 16, 393, 30)
$label = GUICtrlCreateLabel("",16,100,393,30)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetData($Input1,'ICI MON TEXTE A LIRE')
Sleep(2000)
GUICtrlSetState($Input1,$GUI_HIDE)
GUICtrlSetData($label,"$GUI_HIDE")
Sleep(2000)
GUICtrlSetState($Input1,$GUI_Show)
GUICtrlSetData($label,"$GUI_Show")
Sleep(2000)
GUICtrlSetState($Input1,$GUI_DISABLE)
GUICtrlSetData($label,"$GUI_DISABLE")
MsgBox(0,"Lecture en $GUI_DISABLE",">>>>>>>>>" & GUICtrlRead($Input1))
GUICtrlSetState($Input1,$GUI_ENABLE)
GUICtrlSetData($label,"$GUI_ENABLE")
Sleep(2000)
GUICtrlSetState($Input1,$GUI_DISABLE)
GUICtrlSetData($Input1,"Ecriture en $GUI_DISABLE")
GUICtrlSetData($label,GUICtrlRead($Input1))
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

 EndSwitch
WEnd
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

Re: champs Grisé

#3

Message par yohanb767 »

Merci Walkson pour ton petit exemple ,

c'est une des piste que j'avais exploré en fouillant un peu mais le Prb et que mon script et un automate qui rempli des champs dans le system SAP si tu connais
donc les informations dans le champs "code article" que j'aimerai récupérer en variable sont déjà grisés avant le remplissage automatique

et la je sèche
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 143
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: champs Grisé

#4

Message par A2Energie »

Bonjour yohan,

Oui tu peux récupérer le contenu d'un champ grisé ou non grisé,
Pour cela tu dois connaitre la class et instance de ce champ.
Puis tu pourras utiliser une fonction de type :
$Titrepage = "Titre de ton logiciel"
$Class = "CLass de ton champ"
$Instance = "Instance de ton champ"
$Texte = ControlGetText($Titrepage, "", "[CLASS:" & $Class & "; INSTANCE:" & $Instance & "]")
Msgbox(0, "Le texte ans ton champ est :", $Texte)
Pour récupérer la class et instance de ton champ, utilise (Autoit Windows Info) qui est un logiciel installé en même temps que autoit quand tu instal autoit.
Bonne chance :)
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

Re: champs Grisé

#5

Message par yohanb767 »

merci c'est Gentil mais j'ai déjà utilisé (Autoit Windows Info) le soucis c'est que les différents champs grisés et non grisés font parti de la même classe et même instance (je précise que c'est sur un logiciel qui ce nomme SAP)
c'est pour cela que j'utilise des "Send" et "Mouseclic" ou encore des "Tab" pour le remplissage du formulaire
je me demande juste si en mettant le curseur sur le champ grisé ce ne serai pas possible de récupérer son contenu

voici le Script , bien qu'il ne soit pas au top pour des personnes qui ont de l'expérience et je le comprend
je reste preneur de tout conseil
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

If WinActive("Gestion des avis de réception: écran principal") Then

   Opt("GUIOnEventMode", 1)
   BlockInput(1)
   ;Symptômes client
   MouseClick("left", 120, 488, 1, 1)
   Send("AA01")
   ;Fact Nfac
   Send("{TAB 10}")
   Send("FACT")
   ;Destination
   Send("{TAB 2}")
   Send("RETOUR EXPEDITEUR")
   ;Direction
   Send("{TAB 2}")
   Send("REPARATION SIMPLE")
   ;Précision
   MouseClick("left", 190, 579, 1, 1)
   MouseClick("left", 211, 578, 1, 1)
   ;Devis
   MouseClick("left", 84, 278, 1, 5)
   MouseClick("left", 117, 278, 1, 5)
   MouseClick("left", 225, 311, 2, 5)
   BlockInput(0)

   #Region #
   $Form1 = GUICreate("Form1", 257, 147, 387, 245)
   $idValider = GUICtrlCreateButton("Valider", 16, 96, 105, 25)
   GUICtrlSetOnEvent($idValider, "Valider")
   $idAnnuler = GUICtrlCreateButton("Annuler", 136, 96, 105, 25)
   GUICtrlSetOnEvent($idAnnuler, "Annuler")
   $Input1 = GUICtrlCreateLabel("Confirmer le symptôme", 67, 16, 121, 21)
   $Input2 = GUICtrlCreateLabel("Panne", 56, 40, 145, 37)
   GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
   GUISetState(@SW_SHOW)
   #EndRegion #

   Send("{RIGHT}")
   Send("{LEFT}")
   WinSetOnTop("Form1", "", 1)


   While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
         Case $GUI_EVENT_CLOSE
            Exit

      EndSwitch
   WEnd

Else
   Exit
EndIf

Func Valider()
   MouseClick("left", 233, 52, 2, 0) ;Enregistrer
   Exit
EndFunc   ;==>Valider

Func Annuler()
   Exit
EndFunc   ;==>Annuler
Modifié en dernier par orax le jeu. 12 janv. 2017 17:23, modifié 1 fois.
Raison : Ajout des balises pour le code.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: champs Grisé

#6

Message par walkson »

Bonjour,
Autoit Windows Info n'est pas toujours précis.
Il y a le code de Jguich qui est beaucoup plus "verbeux" https://www.autoitscript.fr/forum/viewt ... 670#p74100
Je mets un MsgBox en début du code afin de pouvoir fermer les fenêtres parasites et mettre en place celle qui m’intéresse.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 143
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: champs Grisé

#7

Message par A2Energie »

En effet un champ peut en cacher un autre avec Windows info,
Mais il est impossible que deux champs aient la même class et la même instance pour la même page. Car c'est en quelque sorte l'id des logiciels.
Donc tu te trompe quelque pars, essaye avec le lien de Walkson,

Tu ne pourras pas récupérer le text en placant ta sourie dessus le champ grisé, (quasi impossible, ou usine à gaz assurée).
Sinon tu as la possibilité de récupérer tout le texte de ta fenêtre,
Essaye avec un truc du genre :
$Titrepage = "Titre de ton logiciel"
$Texte1 = ControlGetText($Titrepage, "", "")
$Texte2 = WinGetText($Titrepage, "")
Msgbox(0, "Le texte de ta fenêtre:", $Texte1 & @CRLF & "--------" & @CRLF & $Texte2)
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

Re: champs Grisé  

#8

Message par yohanb767 »

Merci pour tout ! je vais essayer de trouver comment faire avec tout vos conseils mais j'avoue être un peu perdu même si je ferme ce sujet
Répondre