[...] Accéder et Modifier une TNewCheckListBox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Pynouf
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 févr. 2021 15:01
Status : Hors ligne

[...] Accéder et Modifier une TNewCheckListBox

#1

Message par Pynouf »

Bonjour à vous !!!
Bon, j'aime apprendre, me débrouiller et chercher par moi même mais la je sèche après avoir écumé le web !!
J'ai une question concernant un script qui a pour but une automatisation d’installation.
Je cherche à avoir accès aux différents champs d'une TNewCheckListBox pour cocher ou décocher et récupérer les noms des champs.
Je glisse des petites capture et mon bout de code (j'ai testé beaucoup de fonctions differentes trouvées sur le net mais rien ne fonctionne surement dû a une mauvaise utilisation de ma part.)
Je vous donne toutes les infos dessous. En esperant avoir été clair.
Un immense merci d'avance, n'hesitez pas si vous avez des questions.

Bonne journée.

Code : Tout sélectionner

$Temp=WinWaitActive("Hide", "Language Choice")
;$TempData=ControlListView($Temp,"","[CLASS:TNewCheckListBox; INSTANCE:1]", "GetItemCount")
$TempData=ControlCommand($Temp,"","[CLASS:TNewCheckListBox; INSTANCE:1]","GetCurrentSelection","")
;MsgBox($MB_SYSTEMMODAL, "",$TempData )
ControlSend($Temp, "", "","{SPACE}")

>>>> Window <<<<
Title: HideImage
Class: TWizardForm
Position: 482, 180
Size: 571, 463
Style: 0x16CE0000
ExStyle: 0x00010100
Handle: 0x00030E1A

>>>> Control <<<<
Class: TNewCheckListBox
Instance: 1
ClassnameNN: TNewCheckListBox1
Name:
Advanced (Class): [CLASS:TNewCheckListBox; INSTANCE:1]
ID: 69196
Text:
Position: 37, 96
Size: 482, 273
ControlClick Coords: 182, 56
Style: 0x54010161
ExStyle: 0x00000200
Handle: 0x00010E4C

>>>> Mouse <<<<
Position: 709, 362
Cursor ID: 0
Color: 0xFFFFFF

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
Language Choice
Choose the language
Please choose a language, then click Next.
&Next >
Cancel

>>>> Hidden Text <<<<
Setup will install hide into the following folder.
To continue, click Next. If you would like to select a different folder, click Browse.
C:\Program Files\
B&rowse...
Select the components you want to install; clear the components you do not want to install. Click Next when you are ready to continue.
Custom installation
Current selection requires at least 4,166.2 MB of disk space.
< &Back
Exemple.PNG
Modifié en dernier par Pynouf le jeu. 11 févr. 2021 16:31, modifié 1 fois.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#2

Message par TommyDDR »

Petite question : Pourquoi cacher le nom du logiciel dont vous voulez automatiser l'installation ? (même si vous n'avez pas caché toutes les infos)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Pynouf
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 févr. 2021 15:01
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#3

Message par Pynouf »

Bonjour, merci pour votre réponse rapide, alors je l'ai caché parce que c'est dans un contexte professionnel. est ce dérangeant ?
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#4

Message par TommyDDR »

Pas forcément, après si le logiciel n'est pas classé confidentiel, vous pouvez le laisser :P (ça peut aussi permettre de pouvoir tester si besoin).
(Le souci dans le fait de cacher des choses, c'est que la raison a un risque d'être "parce que le sujet n'est pas autorisé sur le forum", mais votre demande me semble légitime.

Pour votre problème, je pense que l'installateur n'utilise pas de composant "basique" de l'API windows, donc vous ne pourrez surement pas utiliser GetItemCount ou GetCurrentSelection.
Si le but est de forcer une langue particulière, avez-vous essayé un ControlClick (et non pas MouseClick) ?
Regardez ici dans AutoIt Window Info pour les coordonnées : onglet control / ControlClick coords
Cela vous permet de cliquer à un endroit précis du control (la bonne lanque).
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#5

Message par jguinch »

Peut-être y a-t’il moyen de lancer le programme d'installation avec des paramètres rendant l'installation silencieuse ? en cherchant sur le web, en tapant le nom du logiciel + "silent install" ?
Généralement, les éditeurs fournissent la doc associée pour un déploiement massif des applications.
Sinon, voir avec un outil de type "Ultimate Silent Switch Finder", qui permet de donner les options d"installation automatique pour certains installeurs (ça marche pas toujours, mais ça vaudrait le coup d'essayer)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Pynouf
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 févr. 2021 15:01
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#6

Message par Pynouf »

Bonjour a vous !
Je pense que le logiciel est autorisé, ce n'est qu'un logiciel de traitement d'image mais je préfère que ça reste confidentiel pour une question de sécurité si ça ne vous gène pas. Je peux éventuellement MP un modérateur pour vérifier si vous le souhaitez.
Le logiciel n'est pas disponible sur le Web. Il est édité par mon entreprise.
Merci pour vos réponses, le ControlClick est en effet ma solution de repli si je ne trouve rien de mieux.
Je vais regarder du coté de Ultimate Silent.
Sinon pas d'autres idées ? Je vais tester et je reviens vers vous.
Merci en tout cas de votre accueil.
Pynouf
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 févr. 2021 15:01
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#7

Message par Pynouf »

Bon malheureusement "Ultimate Silent Switch Finder" n'est pas capable de lire mon .exe ....
Donc a part passer par le click vous ne voyez pas autre chose ?
Bonne journée.
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#8

Message par Nine »

Peut être UIAutomation pourrait mieux lire ce contrôle. Utilise UIASpy pour vérifier si le radio-button est lisible.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#9

Message par Tlem »

Bonsoir.
Revenons aux origines d'AutoIt. ^^

Et pourquoi pas utiliser l'envoi d'une suite de frappe clavier ?

Code : Tout sélectionner

BlockInput(1) ; Pour éviter que l'utilisateur fasse une blague
Send("{TAB 2}") ; 2 fois TAB pour mettre le focus sur le choix de la langue.
Send("{DOWN}") ; Flèche vers le bas pour aller sur fr - French.
Send("{TAB}") ; 1 fois TAB pour aller sur "Next".
Send("{ENTER}") ; Touche ENTREE pour valider.
BlockInput(0) ; On rend la main à l'utilisateur
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#10

Message par walkson »

Revenons aux origines d'AutoIt. ^^
Image
Désolé pour Pynouf mais mon sens de l'humour a pris le dessus, je :arrow:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#11

Message par Nine »

Et pourquoi pas utiliser l'envoi d'une suite de frappe clavier ?
Parce que c'est la PIRE façon d'implanter une automatisation d'application. On ne peut jamais savoir à quoi on envoie ces dits caractères. On a aucun contrôle sur les événements subits. Il faut constamment bloquer l'utilisateur. Bon, je pourrais continuer comme cela longtemps, mais j'espère que j'ai été compris.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#12

Message par Tlem »

@Nine
Il est un vieux proverbe qui dit :
"Faute de grives, on mange des merles."
Ou encore
"Mieux vaut une chèvre qui donne du lait qu'une vache stérile."

^^
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#13

Message par overflow »

Bonjour,
J ai eu le même cas au travail avec un ERP qui n était pas vu par "autoit"
Du coup je me sert du mouseclic en déclarant CaretCoordMode a 0 et quelques screenshoot pour contrôler l avancement .
rgx
Niveau 4
Niveau 4
Messages : 61
Enregistré le : sam. 16 nov. 2019 17:53
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#14

Message par rgx »

Bonjour,

Quand plus aucun élément objet n'est accessible, le plus sure reste encore le pilotage par reconnaissance d'images, à condition de pouvoir faire des captures avec des éléments discriminants. C'est bien plus sécuritaire que le pilotage par coordonnées de souris.
Par contre je ne pense pas que ce soit faisable facilement si l'écran est avec un DPI différent.
Il est édité par mon entreprise.
Alors pourquoi ne pas faire directement des Setups personnalisés ? ou un fichier guide d'installation (comme on faisait pour Windows 9x): on a juste à préparer un fichier texte (ini) pour chaque type de configuration et le setup suit ce guide.

:wink:
Pynouf
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 11 févr. 2021 15:01
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#15

Message par Pynouf »

Bonjour à tous !!!
Merci pour vos nombreuse réponse !
Tout d'abord j'aime beaucoup ton humour Walkson et pour répondre à Tlem par la même occasion, comme l'a dit Nine, j'ai peur de la robustesse de mon code en utilisant simplement l'envoi de suite de frappe. Mais c'est en effet ma solution de repli si je ne trouve pas mieux. (Histoire d'avoir un bon petit lait de chèvre :P )
Nine a écrit : sam. 13 févr. 2021 18:52 Peut être UIAutomation pourrait mieux lire ce contrôle. Utilise UIASpy pour vérifier si le radio-button est lisible.
Je vais regarder, même si j'ai un peu du mal a saisir, c'est un autre moyen d'implémenter ou c'est quelque chose que je peux incorporer dans me code AutoIt ?
overflow a écrit : dim. 14 févr. 2021 11:54 Du coup je me sert du mouseclic en déclarant CaretCoordMode a 0 et quelques screenshoot pour contrôler l avancement .
Merci j'ajoute ca a ma solution de repli alors.
rgx a écrit : dim. 14 févr. 2021 14:15 Alors pourquoi ne pas faire directement des Setups personnalisés ?
Ah ah si les développeur acceptait de perdre du temps à simplifier une installation qu'ils pensent optimisé ma vie serait trop facile :P
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#16

Message par Nine »

Oui c'est une façon plus moderne d'accéder aux contrôles des nouveaux GUI. Tu peux jeter un coup d'oeil à ce lien :

https://www.autoitscript.com/forum/topi ... in-autoit/

Je l'utilise régulièrement lorsque Au3info me fait défault.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Accéder et Modifier une TNewCheckListBox

#17

Message par Tlem »

Bonsoir.
Je me permet d'insister sur certaines choses. Ce n'est pas la première fois qu'il est question d'automatiser quelque chose écrit en Delphi.
De mémoire, le pilotage classique n'a jamais fonctionné correctement et cela s'est souvent terminé par l'utilisation d'une méthode plus simple (voir par un jeté d'éponge).

AMHA, à moins que l'installateur de ce logiciel possède tout un tas d'écrans de choix complexes et/ou que les développeurs mettent à jour régulièrement celui-ci en modifiant les différentes pages d'installation (ce qui dans les deux cas me parait fort peu probable en la circonstance), la solution que j'ai proposé (au delà du fait qu'elle paraisse archaïque) me semble dans ce cas précis bien plus simple à mettre en œuvre.
De toutes façons, quelque soit la méthode, elles ont toutes l'inconvénient de ne pas faire ce qu'on leur demande si la page concernée à changé ou si un autre élément vient perturber le Schmilblick.

L'avantage du Send réside dans la facilité et la rapidité de mise en œuvre (lorsque les autres solutions ne fonctionnent pas).
N’oubliez pas que si les pages de l'instalateur changent, il faudra repasser par la case adaptation du code.
Après, si vous avez du temps, la solution de Nine sera certainement intéressent à mettre en œuvre.

@Pynouf :
Vous ne m'avez pas indiqué si le code que je vous ai écrit fonctionne pour votre installateur ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre