Page 1 sur 1
[..] Debutant - Besoin d'une petite aide - Listview
Posté : ven. 27 juin 2014 11:14
par sloyen93
Bonjour,
Je suis actuellement en train de faire un script en autoIt, c'est mon premier.
Mon script, pour le moment ce base sur l'installation automatique de plusieurs applications (envoie des touches tab, entrer ect..)
le problème est, que tout les logiciels sont listés dans une ListView.
C'est exactement le même problème, Si je devais par exemple, lancer des actions dans désinstaller un programme dans le panneau de configuration. (la liste ou tous les logiciels apparaissent) .
Je souhaiterais avoir l'exemple avec la désinstallation d'un programme depuis le panneau de config pour que je puisse l'adapter dans mon cas.
et est-il possible d'évité d'envoyer des "down" pour sélectionné un programme en milieu de liste ? si c'est le cas ça serait parfait !!
J'espère avoir été clair,
merci de votre aide

Re: Debutant - Besoin d'une petite aide - Listview
Posté : ven. 27 juin 2014 12:48
par jguinch
Merci de modifier le titre du sujet afin qu'il respecte les
règles de présentation d'un message.
Est-ce une demande de création de script, ou demande d'aide ?
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : ven. 27 juin 2014 14:26
par sloyen93
A désolé, je viens de le modifier
Euh, une demande de script, dans le sens ou je souhaite m'en inspirer.
En gros,
le script lance "désinstaller un programme" dans le panneau de configuration.
Sélectionne un logiciel, en milieu de liste si possible sans utilisé "TAB" mais avec le nom du programme
Appuie sur entrée
cdlt
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : ven. 27 juin 2014 15:46
par jguinch
Voilà un exemple :
► Afficher le texte
Code : Tout sélectionner
#include <GuiListView.au3>
Local $sAppName = "Notepad++"
If @OSArch = "x64" AND NOT @AutoItX64 Then Exit MsgBox(16, "Erreurr", "Pour des raisons de compatibilité, vous devez exécuter le script en mode 64 bits.")
RunWait("control appwiz.cpl")
Local $hWindow = WinWait("[CLASS:CabinetWClass;REGEXPTITLE:.*Programmes et fonctionnalités]", "")
Local $hListView = ControlGetHandle($hWindow, "", "[CLASS:SysListView32; INSTANCE:1]")
Local $iIndex = _GUICtrlListView_FindInText ($hListView, $sAppName)
_GUICtrlListView_SetItemSelected ($hListView, $iIndex)
ControlSend($hWindow, "", $hListView, "{ENTER}")
Attention, certaines fonctions comme ControlListView ou _GUICtrlListView... fonctionnent mal avec des scripts x86 sous Windows x64. Donc il faut compiler ou exécuter le script en 64 bits.
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : ven. 27 juin 2014 16:29
par sloyen93
Merci beaucoup, je test ça lundi matin !
Super cool, je vous tiens au courant
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : mer. 06 août 2014 08:50
par sloyen93
Salut, je viens de tester le script fonctionne
J'ai un autre problème, je n'arrive pas à l'adapter dans mon cas.
Si quelqu'un peux m'aider, je peux le payer ou faire un don au forum pour vous remercier
Je vous montre quelques screens :
http://hpics.li/0e16491
http://hpics.li/5c36653
http://hpics.li/37956f6
http://hpics.li/fcd202a
http://hpics.li/14a99c7
Je souhaite faire exactement pareil que le script de jguinch.
Le script sélectionne un programme dans la listview grâce à son nom et appuie sur entrée.
Pour le moment, j'utilise le succession de touche pour pouvoir sélectionner les programmes, le problème si un logiciel n'est plus dans la liste tout le script plante.
avec l'autre solution je n'aurais plus de problème
Je vous remercie

Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : mer. 06 août 2014 12:45
par blacksoul305
Bonjour,
avec AutoIt Windows Info, tu ne devrais pas avoir trop de mal à récupérer le titre de la fenêtre donc son handle, puis l'ID de la ListView. Une fois les bonnes données, je pense qu'il est possible d'utiliser le script de jguinch comme base.
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : mer. 06 août 2014 14:18
par jguinch
Je n'ai pas SCCM, donc je ne peux pas tester.
Est-ce que ça fonctionne avec ça ? :
► Afficher le texte
Code : Tout sélectionner
#include <GuiListView.au3>
Local $sAppName = "ZIP X32 all - Install_7ZIP" ; nom exact de l'application (non sensible à la casse)
If @OSArch = "x64" AND NOT @AutoItX64 Then Exit MsgBox(16, "Erreurr", "Pour des raisons de compatibilité, vous devez exécuter le script en mode 64 bits.")
RunWait("control SMSRAP.CPL")
Local $hWindow = WinWait("Run Advertised Programs")
Local $hListView = ControlGetHandle($hWindow, "", "[CLASS:SysListView32; INSTANCE:1]")
Sleep(5000) ; on attend que la listview se remplisse...
Local $iIndex = _GUICtrlListView_FindInText ($hListView, $sAppName)
If $iIndex = -1 Then Exit MsgBox(16, "", $sAppName & " not found")
_GUICtrlListView_SetItemSelected ($hListView, $iIndex)
ControlSend($hWindow, "", $hListView, "{ENTER}")
Je ne suis pas sûr du SMSRAP.CPL, à corriger en fonction...(sinon, tu lancez déjà ton client SCCM puis tu lances le script)
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : mer. 06 août 2014 14:34
par sloyen93
Alors merci a vous deux déjà
Le nouveau code que tu m'as donné ne fonctionne pas
Mais là, le code dépasse très largement mes compétences, j'ai modifié le sleep a 15 secondes au cas où mais pareil
Voici une capture d'écran :
http://hpics.li/52e8431
PS : Ne t'embête pas avec le lancement de l'appli

sinon, le chemin est celui là : %windir%\SysWOW64\CCM\SMSRAP.CPL
Merci c'est super cool de m'aider
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : mer. 06 août 2014 14:55
par jguinch
Avec ça, tu obtiens quoi ?
► Afficher le texte
Code : Tout sélectionner
#Include <Array.au3>
#include <GuiListView.au3>
Local $hWindow = WinWait("Run Advertised Programs", "")
Sleep(5000)
Local $hListView = ControlGetHandle($hWindow, "", "[CLASS:SysListView32; INSTANCE:1]")
Local $iRowCount = _GUICtrlListView_GetItemCount($hListView)
Local $iColCount = _GUICtrlListView_GetColumnCount ( $hListView )
Local $aApp
Local $aList[$iRowCount][$iColCount]
For $i = 0 To $iRowCount - 1
$aApp = _GUICtrlListView_GetItemTextArray($hListView, $i)
For $j = 1 To $iColCount
$aList[$i][$j - 1] = $aApp[$j]
Next
Next
_ArrayDisplay($aList)
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : mer. 06 août 2014 16:11
par sloyen93
Voilà
http://hpics.li/8dfec37
EDIT : Je viens de remarquer ! en lançant le script en x64 (je suis sur du 64bits) ton script me renvoie rien (voir photo haut dessus)
Si je le lance en x86 => C'est bon j'ai le tableau rempli
http://hpics.li/7f417a1
On avance !

Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : mer. 06 août 2014 22:03
par jguinch
Oui, j'avais pas remis la partie 64 bits que j'avais mis au début des autres codes...
Pour info, certaines fonctions ne réagissent pas bien sur une plateforme x64 lorsqu'on exécute les script en x86.
Du coup, il te reste à faire des tests avec les différents codes.
Utilise mon dernier code (_ArrayDisplay) pour relever le nom d'une application telle qu'elle est listée, puis dans l'avant-dernier code, remplace la valeur de $sAppName par le nom de cette application ; le tout exécuter en x64 bien sûr.
Ca doit forcément marcher, au moins sélectionner la bonne application dans la liste.
Si ce n'est pas le cas, regarde ce que te retourne _GUICtrlListView_SetItemSelected.
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : jeu. 07 août 2014 01:08
par jchd
Pardon d'ouvrir une parenthèse ici, mais peux-tu préciser ça (dans un autre fil, éventuellement) :
Pour info, certaines fonctions ne réagissent pas bien sur une plateforme x64 lorsqu'on exécute les script en x86.
Re: [..] Debutant - Besoin d'une petite aide - Listview
Posté : jeu. 07 août 2014 09:16
par sloyen93
Bonjour,
Merci alors, en prenant le nom qui ne retourne ton dernier script :
Dans ton deuxième script en x86 : OK selectionne l'appli mais n'est pas "surligner en bleu" ce qui est donc pas possible de send le "enter" je pense.
en x64 : Il ne trouve pas l'appli (comme quand j’exécute le script pour lister les applications)
J'ai fait une petite vidéo rapide :
https://www.youtube.com/watch?v=e3y38t-P9oE
Merci