Page 1 sur 1

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

Posté : jeu. 11 févr. 2021 15:27
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

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

Posté : jeu. 11 févr. 2021 16:24
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)

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

Posté : jeu. 11 févr. 2021 16:30
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 ?

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

Posté : jeu. 11 févr. 2021 17:24
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).

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

Posté : jeu. 11 févr. 2021 20:56
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)

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

Posté : ven. 12 févr. 2021 14:10
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.

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

Posté : ven. 12 févr. 2021 14:58
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.

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

Posté : sam. 13 févr. 2021 18:52
par Nine
Peut être UIAutomation pourrait mieux lire ce contrôle. Utilise UIASpy pour vérifier si le radio-button est lisible.

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

Posté : sam. 13 févr. 2021 22:51
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

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

Posté : dim. 14 févr. 2021 00:36
par walkson
Revenons aux origines d'AutoIt. ^^
Image
Désolé pour Pynouf mais mon sens de l'humour a pris le dessus, je :arrow:

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

Posté : dim. 14 févr. 2021 00:41
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.

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

Posté : dim. 14 févr. 2021 10:56
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."

^^

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

Posté : dim. 14 févr. 2021 11:54
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 .

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

Posté : dim. 14 févr. 2021 14:15
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:

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

Posté : lun. 15 févr. 2021 09:39
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

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

Posté : lun. 15 févr. 2021 20:08
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.

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

Posté : lun. 15 févr. 2021 22:20
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 ?