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
champs Grisé
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- walkson
- Modérateur
- Messages : 1037
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: champs Grisé
Bonjour et bonne année
Un petit exemple que l'on peut faire et obtenir
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
#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)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: champs Grisé
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
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
Re: champs Grisé
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 :
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
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)
$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)
Bonne chance

Re: champs Grisé
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
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
#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.
Raison : Ajout des balises pour le code.
- walkson
- Modérateur
- Messages : 1037
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: champs Grisé
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.
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)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: champs Grisé
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 :
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)
$Texte1 = ControlGetText($Titrepage, "", "")
$Texte2 = WinGetText($Titrepage, "")
Msgbox(0, "Le texte de ta fenêtre:", $Texte1 & @CRLF & "--------" & @CRLF & $Texte2)
Re: champs Grisé
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