[R] Fonction qui liste les programmes à désinstaller

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Loustak
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mar. 29 avr. 2014 21:11
Status : Hors ligne

[R] Fonction qui liste les programmes à désinstaller

#1

Message par Loustak »

Bonjour,
J'essai d'écrire une fonction qui liste les programme pouvant être désinstaller sur l'ordinateur, sauf qu'elle marche à moitié, seul les programmes lu l'ors de la 2e clef de registre sont correctement ajouté à la combobox, pourquoi ?

Code : Tout sélectionner

Func _uninstallProgram()
        global $count = 0
        _uninstallProgramList("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
        _uninstallProgramList("CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
        _ArrayDisplay($arrayUninstall)
EndFunc

Func _uninstallProgramList($RegKey)
    Local $key, $name, $cmd, $scmd
While 1
    $count += 1
    $key = RegEnumKey($RegKey, $count)
    If @error Then
        ExitLoop
    EndIf
    $name = RegRead($RegKey & "\" & $key, "DisplayName")
    $cmd = RegRead($RegKey & "\" & $key, "UninstallString")
    $scmd = RegRead($RegKey & "\" & $key, "DisplayIcon")
    $arrayUninstall[$count][0] = $name
    $arrayUninstall[$count][1] = $cmd
    $arrayUninstall[$count][2] = $scmd
    GUICtrlSetData($CMB_program, $name)
Wend
EndFunc
Le but de ma fonction étant que la combobox soit vidé ainsi que le tableau si je la rappelle plus tard.
Merci de votre aide :)
Modifié en dernier par Loustak le dim. 22 juin 2014 14:35, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Fonction qui liste les programmes à désinstaller

#2

Message par jguinch »

Si $name est vide, GUIGetSetData va vider la ComboBox.

Petites remarques :
- il faudra prévoir d'aller lire dans HKEY_LOCAL_MACHINE64 pour les programmes installés en 64 bits
- une ComboBox ne peut pas contenir de noms en double (si tu as par exemple Java en 32 et en 64 bits)
- il faut éviter de déclarer des variables en Global à l'intérieur des fonctions (plutôt en début de script)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Loustak
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mar. 29 avr. 2014 21:11
Status : Hors ligne

Re: [..] Fonction qui liste les programmes à désinstaller

#3

Message par Loustak »

Merci de votre réponse, ça ma permis de régler déjà un gros problème :wink:
Sauf que maintenant c'est la 2e clef de registre qui n'est pas lu, dans le registre j'ai :
Codeblock, utorrent & chrome alors que dans le tableau rien ?

Code : Tout sélectionner

Func _uninstallProgram()
        _uninstallProgramList("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
        _uninstallProgramList("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall")
        _ArrayDisplay($arrayUninstall)
EndFunc

Func _uninstallProgramList($RegKey)
    Local $key, $name, $cmd, $scmd
While 1
    $count += 1
    $key = RegEnumKey($RegKey, $count)
    If @error Then
        ExitLoop
    EndIf
    $name = RegRead($RegKey & "\" & $key, "DisplayName")
    $cmd = RegRead($RegKey & "\" & $key, "UninstallString")
    $scmd = RegRead($RegKey & "\" & $key, "DisplayIcon")
    if $name <> "" Then
        $arrayUninstall[$count][0] = $name
        $arrayUninstall[$count][1] = $cmd
        $arrayUninstall[$count][2] = $scmd
    GUICtrlSetData($CMB_program, $name)
    Else
    GUICtrlSetData($CMB_program, $TXT_programList)
    EndIf
Wend
EndFunc
 
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Fonction qui liste les programmes à désinstaller

#4

Message par jguinch »

Et avec ça, ça donne quoi ?
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Loustak
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mar. 29 avr. 2014 21:11
Status : Hors ligne

Re: [..] Fonction qui liste les programmes à désinstaller

#5

Message par Loustak »

ça fonctionne tout s'affiche ensuite, je suppose que pour vider la cmbobox he fait GuiCtrlSetData() et pour le tableau $montableau[]="" ?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Fonction qui liste les programmes à désinstaller

#6

Message par jguinch »

Oui c'est à peu près ça.
Vider le tableau, c'est pas forcément utile dans ce cas...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre