Sign in to follow this  
Followers 0
woodstock

uninstall script -

6 posts in this topic

#1 ·  Posted (edited)

Hello

Possybility to search program to uninstall by keyword on multiple criteria. Hope it will be usefull for some of you.

NB: interface in french (and in script comments)... This is my first contribution on this forum, cannot post in "sample script" forum

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.1.1.0
 Author:         Fabrice LANG

 Script Function:
    Recherche des produits installés sur le poste....
    

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

Opt("TrayIconHide",1)

Global const $max_retour=255
Global const $NbrClef = 11
Dim    $Install_Clef [$NbrClef] = ["","Publisher","DisplayName","DisplayVersion","VersionMajor","VersionMinor", _ 
                                "InstallLocation","InstallDate","UninstallString","LocalPackage","WindowsInstaller"]
Global const $idx_pos_DisplayName=2
Dim    $Install_Val [$max_retour][$NbrClef]
Dim    $Install_TreeView [$max_retour][$NbrClef]
Global $Install_Nbr

#include <GUIConstants.au3>
; == GUI generated with Koda ==
$LaBojte = GUICreate("Recherche d'installation", 528, 487, 247, 122)
$i_Chercher = GUICtrlCreateInput("AutoIt", 16, 8, 409, 21)
$b_Chercher = GUICtrlCreateButton("Chercher", 432, 8, 89, 21, 0)
$tv_Liste = GUICtrlCreateTreeView(8, 58, 513, 393, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS,$TVS_TRACKSELECT,$TVS_FULLROWSELECT), $WS_EX_CLIENTEDGE)
$b_Action = GUICtrlCreateButton("Action", 336, 456, 89, 25, 0)
$b_Quitter = GUICtrlCreateButton("Quitter", 432, 456, 89, 25, 0)
GUICtrlCreateLabel("Under GPL Licence", 3, 456, 320, 25, BitOR($SS_CENTER,$SS_CENTERIMAGE))
$c_DisplayName = GUICtrlCreateCheckbox("DisplayName", 24, 34, 81, 17)
$c_Publisher = GUICtrlCreateCheckbox("Publisher", 128, 34, 65, 17)
$c_AutreClef = GUICtrlCreateCheckbox("Autre :", 224, 34, 48, 17)
$Cmb_AutreClef = GUICtrlCreateCombo("", 275, 32, 246, 21)
$tmp=$Install_Clef [1]
For $cpt1 = 2 to $NbrClef-1
    $tmp = $tmp & "|" &$Install_Clef [$cpt1]
Next 
GUICtrlSetData(-1, $tmp, $Install_Clef [1])


GUICtrlSetState($b_Action, $GUI_DISABLE)
;GUICtrlSetState($c_AutreClef, $GUI_CHECKED)
GUICtrlSetState($c_DisplayName, $GUI_CHECKED)
GUISetState(@SW_SHOW)

While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $b_Quitter
        ExitLoop
    Case $msg = $b_Chercher
        RempliTreeView()
    Case $msg = $b_Action
        Action()
    Case Else
        $item = GUICtrlRead($tv_Liste)      ; Get the controlID of the current selected treeview item
        If $item <> 0 Then
            $text = GUICtrlRead($item, 1) ; Get the text of the treeview item
            If StringInStr( $text,"UninstallString") Or StringInStr( $text,"LocalPackage") Then 
                If GUICtrlRead($b_Action)<>"Desinstaller" Then
                    GUICtrlSetData($b_Action,"Desinstaller")
                    GUICtrlSetState($b_Action, $GUI_ENABLE)
                EndIf
            ElseIf StringInStr( $text,"InstallLocation") Then 
                If GUICtrlRead($b_Action)<>"Explorer" Then
                    GUICtrlSetData($b_Action,"Explorer")
                    GUICtrlSetState($b_Action, $GUI_ENABLE)
                EndIf
            ElseIf GUICtrlRead($b_Action)<>"Action" Then
                GUICtrlSetData($b_Action,"Action")
                GUICtrlSetState($b_Action, $GUI_DISABLE)
            EndIf
        EndIf       ;;;;;;;
    EndSelect
WEnd
Exit

Func Action()
    Select 
        Case GUICtrlRead($b_Action) == "Desinstaller"
            $text=GUICtrlRead(GUICtrlRead($tv_Liste),1)
            $text=StringMid( $text, StringInStr($text,"=")+1)
            Opt("RunErrorsFatal", 0);1=fatal, 0=silent set @error
            Run( $text )
            If @error Then
                MsgBox(16,"Erreur d'execution !","Une erreur fatale est rencontrée au lancement de la commande :" & @CRLF & @CRLF & "=> " & $text )
            EndIf
            Opt("RunErrorsFatal", 1)
        Case GUICtrlRead($b_Action) == "Explorer"
            $text=GUICtrlRead(GUICtrlRead($tv_Liste),1)
            $text=StringMid( $text, StringInStr($text,"=")+1)
            If FileExists( $text ) Then
                Run("explorer.exe " & $text)
            Else
                MsgBox(16,"Erreur !","Le répertoire indiqué n'existe pas :" & @CRLF & @CRLF & "=> " & $text )
            EndIf
        Case Else
    EndSelect
EndFunc

Func RempliTreeView()
    Delete_TreeView()
    
    If GUICtrlRead($c_DisplayName ) = $GUI_CHECKED Then 
        Recherche_registre( "DisplayName",GUICtrlRead($i_Chercher ) )
        Recherche_registre( "DisplayName",GUICtrlRead($i_Chercher ),"Uninstall" )
    EndIf
    If GUICtrlRead($c_Publisher ) = $GUI_CHECKED Then 
        Recherche_registre( "Publisher",GUICtrlRead($i_Chercher ) )
        Recherche_registre( "Publisher",GUICtrlRead($i_Chercher ),"Uninstall" )
    EndIf
    If GUICtrlRead($c_AutreClef ) = $GUI_CHECKED Then 
        Recherche_registre( GUICtrlRead($cmb_AutreClef),GUICtrlRead($i_Chercher ) )
        Recherche_registre( GUICtrlRead($cmb_AutreClef),GUICtrlRead($i_Chercher ),"Uninstall" )
    EndIf
    If $Install_Nbr >0 Then
        For $cpt1 = 0 to $Install_Nbr-1
            $Install_TreeView[$cpt1][0] = GUICtrlCreateTreeViewitem($Install_Val[$cpt1][0]& " ["& $Install_Val[$cpt1][2] &"]", $tv_Liste)
            For $cpt2 = 1 to $NbrClef-1
                If $Install_Val[$cpt1][$cpt2] <> "" Then
                    $Install_TreeView[$cpt1][$cpt2] = GUICtrlCreateTreeViewitem($Install_Clef [$cpt2]  & "=" & $Install_Val[$cpt1][$cpt2], $Install_TreeView[$cpt1][0])
                EndIf
            Next 
        Next 
    EndIf
EndFunc

Func Delete_TreeView()
    GUICtrlDelete ($tv_Liste)
    For $cpt1 = 0 to $Install_Nbr-1
        For $cpt2 = 1 to $NbrClef-1
            If $Install_Val[$cpt1][$cpt2] <> "" Then
                $Install_Val[$cpt1][$cpt2]=""
            EndIf
        Next 
        $Install_Val[$cpt1][0]=""
    Next 
    $Install_Nbr = 0
    $tv_Liste = GUICtrlCreateTreeView(8, 58, 513, 393, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS,$TVS_TRACKSELECT,$TVS_FULLROWSELECT), $WS_EX_CLIENTEDGE)
EndFunc

Func TabToString()
    Local $Msg=""
    For $cpt1 = 0 to $Install_Nbr-1
        $Msg=$Msg & "[" & $Install_Val[$cpt1][0] & "]"
        For $cpt2 = 1 to $NbrClef-1
            If $Install_Val[$cpt1][$cpt2] <> "" Then
                $Msg= $Msg & @CRLF & $Install_Clef [$cpt2]  & "=" & $Install_Val[$cpt1][$cpt2]
            EndIf
        Next 
        $Msg=$Msg & @CRLF & @CRLF
    Next 
    Return $Msg
EndFunc

Func Controle_Deja_Trouve( $a_chercher )
    Local $Msg=""
    For $cpt1 = 0 to $Install_Nbr-1
        ;- Généralement, la valeur se retouve en [8]... on essaie de gagner du temps si existe.
        If StringInStr( $Install_Val[$cpt1][8], $a_chercher  ) <> 0 Then Return True
        For $cpt2 = 0 to $NbrClef-1
            If StringInStr( $Install_Val[$cpt1][$cpt2], $a_chercher  ) <> 0 Then
                Return True
            EndIf
        Next 
    Next 
    Return False
EndFunc

    ;~ Recherche à partir de la base de registres des programmes installés. 
    ;- ===================================================================
    ;-   $Quoi :   quelle clef doit-on controler ?
    ;-   $Valeur : quelle valeur recherche-t'on ? (doit être au moins une sous-chaine)
    ;-   $Ou     : à partir d'où doit-on rechercher ? Par défaut, les produits installés par l'administrateur.
    ;~  
    ;~ Exemples d'utilisation :
    ;- =======================
    ;~ Recherche_registre( "DisplayName","antivirus" )
    ;~ Recherche_registre( "DisplayName","liveupdate","Uninstall" )
    ;- 
Func Recherche_registre( const $Quoi , const $Valeur, $Ou = "S-1-5-18" )
    Local $i=0
    Local $fini=0
    Local $DisplayName=""
    Local $SousClef="\"
    
    Select
        Case $Ou = "Uninstall"
            ; Information d'installation à rechercher dans la partie... UnInstall !
            $Ou = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
        Case Else
            ; Information d'installation à rechercher dans la partie des produits installés.
            $Ou = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\" & $Ou & "\Products\"
            $SousClef = "\InstallProperties"
    EndSelect
    Do
        $i = $i + 1
        Local $var = RegEnumKey($Ou, $i)
        If @error Or $Install_Nbr >= $max_retour Then
            $fini=True
            If $Install_Nbr >= $max_retour Then
                MsgBox( 64,"Nombre maximal de recherche atteint","Il y a trop de correspondance... Seules les " & $max_retour & " premières sont présentées.")
            EndIf
        Else
            $Product = RegRead($Ou & $var & $SousClef, $Quoi)
            If StringInStr( $Product , $Valeur ) Then
                If Controle_Deja_Trouve( $var ) = False Then
                    $Install_Val[$Install_Nbr][0] = $var
                    $Install_Clef[0] = $Quoi 
                    For $cpt1 = 1  to ( $NbrClef - 1 )
                        $Install_Val[$Install_Nbr][$cpt1] = RegRead($Ou & $var & $SousClef, $Install_Clef[$cpt1] )
                    Next
                    $Install_Nbr = $Install_Nbr + 1
                EndIf
            EndIf
        EndIf
    Until $fini
    Return $Install_Nbr
EndFunc
Edited by SmOke_N
Authors request

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

I didn't try your script, but you probably need an avatar for your account here at the AutoIt forums:

- "Woodstock" from the Peanuts cartoons. Or the gif:

You would start out in "My Controls" at the top of this webpage, then go to "Change my avatar."

Edited by Squirrely1

Das Häschen benutzt Radar

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

I didn't try your script, but you probably need an avatar for your account here at the AutoIt forums:

- "Woodstock" from the Peanuts cartoons. Or the gif:

You would start out in "My Controls" at the top of this webpage, then go to "Change my avatar."

Ok... I just did it... from wikipedia because I don't see the "Peanuts cartoons" on the avatar's list... and url to the gif you include in your message is too long for the interface to add avatar from it. Edited by woodstock

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Hello

Possybility to search program to uninstall by keyword on multiple criteria. Hope it will be usefull for some of you.

NB: interface in french (and in script comments)... This is my first contribution on this forum, cannot post in "sample script" forum

@woodstock,

I like this! I've changed it a little bit to make the search dynamic as you type; no need to click the "Chercher" (Search) button.

Sorry, but I've mixed some english in with your french :)

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.1.1.0
 Author:         Fabrice LANG, dynamic search update mod by ResNullius

 Script Function:
    Recherche des produits installés sur le poste....
   

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

;Opt("TrayIconHide",1)

Global const $max_retour=255
Global const $NbrClef = 11
Dim    $Install_Clef [$NbrClef] = ["","Publisher","DisplayName","DisplayVersion","VersionMajor","VersionMinor", _
                                "InstallLocation","InstallDate","UninstallString","LocalPackage","WindowsInstaller"]
Global const $idx_pos_DisplayName=2
Dim    $Install_Val [$max_retour][$NbrClef]
Dim    $Install_TreeView [$max_retour][$NbrClef]
Global $Install_Nbr

#include <GUIConstants.au3>
; == GUI generated with Koda ==
$LaBojte = GUICreate("Recherche d'installation", 528, 487, 247, 122)
$i_Chercher = GUICtrlCreateInput("AutoIt", 16, 8, 409, 21)
;$b_Chercher = GUICtrlCreateButton("Chercher", 432, 8, 89, 21, 0)
$b_Clear = GUICtrlCreateButton("Clear", 432, 8, 89, 21, 0)
$tv_Liste = GUICtrlCreateTreeView(8, 58, 513, 393, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS,$TVS_TRACKSELECT,$TVS_FULLROWSELECT), $WS_EX_CLIENTEDGE)
$b_Action = GUICtrlCreateButton("Action", 336, 456, 89, 25, 0)
$b_Quitter = GUICtrlCreateButton("Quitter", 432, 456, 89, 25, 0)
GUICtrlCreateLabel("Under GPL Licence", 3, 456, 320, 25, BitOR($SS_CENTER,$SS_CENTERIMAGE))
$c_DisplayName = GUICtrlCreateCheckbox("DisplayName", 24, 34, 81, 17)
$c_Publisher = GUICtrlCreateCheckbox("Publisher", 128, 34, 65, 17)
$c_AutreClef = GUICtrlCreateCheckbox("Autre :", 224, 34, 48, 17)
$Cmb_AutreClef = GUICtrlCreateCombo("", 275, 32, 246, 21)
$tmp=$Install_Clef [1]
For $cpt1 = 2 to $NbrClef-1
    $tmp = $tmp & "|" &$Install_Clef [$cpt1]
Next
GUICtrlSetData(-1, $tmp, $Install_Clef [1])

GUICtrlSetState($b_Action, $GUI_DISABLE)
;GUICtrlSetState($c_AutreClef, $GUI_CHECKED)
GUICtrlSetState($c_DisplayName, $GUI_CHECKED)
GUISetState(@SW_SHOW)
$c_OldText = GUICtrlRead($i_Chercher )
RempliTreeView()    
GUICtrlSetState($i_Chercher,$GUI_FOCUS)

While 1
    
    $c_Text =  GUICtrlRead($i_Chercher )
    If GUICtrlGetHandle("") = $i_Chercher then ControlSend($LaBojte,"",$i_Chercher,"{END}")
    If $c_Text <> $c_OldText Then
        If StringLen($c_Text) >= 1 then ; this number determines how many characters must be entered before the search starts; above 1 gives better responsiveness
            RempliTreeView()    
        Else
            If StringLen($c_Text) = 0 then  Delete_TreeView()
        EndIf 
        $c_OldText = $c_Text
    EndIf
    
    $msg = GuiGetMsg()

    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $b_Quitter
        ExitLoop
    ;Case $msg = $b_Chercher
    ;    RempliTreeView()
    Case $msg = $b_Clear
        GUICtrlSetData($i_Chercher,"")
        GUICtrlSetState($i_Chercher,$GUI_FOCUS)
        ;RempliTreeView()
        Delete_TreeView()
    Case $msg = $b_Action
        Action()
    Case Else
        $item = GUICtrlRead($tv_Liste)      ; Get the controlID of the current selected treeview item
        If $item <> 0 Then
            $text = GUICtrlRead($item, 1) ; Get the text of the treeview item
            If StringInStr( $text,"UninstallString") Or StringInStr( $text,"LocalPackage") Then
                If GUICtrlRead($b_Action)<>"Desinstaller" Then
                    GUICtrlSetData($b_Action,"Desinstaller")
                    GUICtrlSetState($b_Action, $GUI_ENABLE)
                EndIf
            ElseIf StringInStr( $text,"InstallLocation") Then
                If GUICtrlRead($b_Action)<>"Explorer" Then
                    GUICtrlSetData($b_Action,"Explorer")
                    GUICtrlSetState($b_Action, $GUI_ENABLE)
                EndIf
            ElseIf GUICtrlRead($b_Action)<>"Action" Then
                GUICtrlSetData($b_Action,"Action")
                GUICtrlSetState($b_Action, $GUI_DISABLE)
            EndIf
        EndIf      ;;;;;;;
    EndSelect
WEnd
Exit

Func Action()
    Select
        Case GUICtrlRead($b_Action) == "Desinstaller"
            $text=GUICtrlRead(GUICtrlRead($tv_Liste),1)
            $text=StringMid( $text, StringInStr($text,"=")+1)
            Opt("RunErrorsFatal", 0);1=fatal, 0=silent set @error
            Run( $text )
            If @error Then
                MsgBox(16,"Erreur d'execution !","Une erreur fatale est rencontrée au lancement de la commande :" & @CRLF & @CRLF & "=> " & $text )
            EndIf
            Opt("RunErrorsFatal", 1)
        Case GUICtrlRead($b_Action) == "Explorer"
            $text=GUICtrlRead(GUICtrlRead($tv_Liste),1)
            $text=StringMid( $text, StringInStr($text,"=")+1)
            If FileExists( $text ) Then
                Run("explorer.exe " & $text)
            Else
                MsgBox(16,"Erreur !","Le répertoire indiqué n'existe pas :" & @CRLF & @CRLF & "=> " & $text )
            EndIf
        Case Else
    EndSelect
EndFunc

Func RempliTreeView()
    Delete_TreeView()
    ControlSend($LaBojte,"",$i_Chercher,"{END}")
    If GUICtrlRead($c_DisplayName ) = $GUI_CHECKED Then
        Recherche_registre( "DisplayName",GUICtrlRead($i_Chercher ) )
        Recherche_registre( "DisplayName",GUICtrlRead($i_Chercher ),"Uninstall" )
    EndIf
    If GUICtrlRead($c_Publisher ) = $GUI_CHECKED Then
        Recherche_registre( "Publisher",GUICtrlRead($i_Chercher ) )
        Recherche_registre( "Publisher",GUICtrlRead($i_Chercher ),"Uninstall" )
    EndIf
    If GUICtrlRead($c_AutreClef ) = $GUI_CHECKED Then
        Recherche_registre( GUICtrlRead($cmb_AutreClef),GUICtrlRead($i_Chercher ) )
        Recherche_registre( GUICtrlRead($cmb_AutreClef),GUICtrlRead($i_Chercher ),"Uninstall" )
    EndIf
    If $Install_Nbr >0 Then
        For $cpt1 = 0 to $Install_Nbr-1
            $Install_TreeView[$cpt1][0] = GUICtrlCreateTreeViewitem($Install_Val[$cpt1][0]& " ["& $Install_Val[$cpt1][2] &"]", $tv_Liste)
            For $cpt2 = 1 to $NbrClef-1
                If $Install_Val[$cpt1][$cpt2] <> "" Then
                    $Install_TreeView[$cpt1][$cpt2] = GUICtrlCreateTreeViewitem($Install_Clef [$cpt2]  & "=" & $Install_Val[$cpt1][$cpt2], $Install_TreeView[$cpt1][0])
                EndIf
            Next
        Next
    EndIf
    ControlSend($LaBojte,"",$i_Chercher,"{END}")
EndFunc

Func Delete_TreeView()
    GUICtrlDelete ($tv_Liste)
    ControlSend($LaBojte,"",$i_Chercher,"{END}")
    For $cpt1 = 0 to $Install_Nbr-1
        For $cpt2 = 1 to $NbrClef-1
            If $Install_Val[$cpt1][$cpt2] <> "" Then
                $Install_Val[$cpt1][$cpt2]=""
            EndIf
        Next
        $Install_Val[$cpt1][0]=""
    Next
    $Install_Nbr = 0
    $tv_Liste = GUICtrlCreateTreeView(8, 58, 513, 393, BitOr($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS,$TVS_TRACKSELECT,$TVS_FULLROWSELECT), $WS_EX_CLIENTEDGE)
EndFunc

Func TabToString()
    Local $Msg=""
    For $cpt1 = 0 to $Install_Nbr-1
        $Msg=$Msg & "[" & $Install_Val[$cpt1][0] & "]"
        For $cpt2 = 1 to $NbrClef-1
            If $Install_Val[$cpt1][$cpt2] <> "" Then
                $Msg= $Msg & @CRLF & $Install_Clef [$cpt2]  & "=" & $Install_Val[$cpt1][$cpt2]
            EndIf
        Next
        $Msg=$Msg & @CRLF & @CRLF
    Next
    Return $Msg
EndFunc

Func Controle_Deja_Trouve( $a_chercher )
    Local $Msg=""
    For $cpt1 = 0 to $Install_Nbr-1
        ;- Généralement, la valeur se retouve en [8]... on essaie de gagner du temps si existe.
        If StringInStr( $Install_Val[$cpt1][8], $a_chercher  ) <> 0 Then Return True
        For $cpt2 = 0 to $NbrClef-1
            If StringInStr( $Install_Val[$cpt1][$cpt2], $a_chercher  ) <> 0 Then
                Return True
            EndIf
        Next
    Next
    Return False
EndFunc

    ;~ Recherche à partir de la base de registres des programmes installés.
    ;- ===================================================================
    ;-   $Quoi :   quelle clef doit-on controler ?
    ;-   $Valeur : quelle valeur recherche-t'on ? (doit être au moins une sous-chaine)
    ;-   $Ou     : à partir d'où doit-on rechercher ? Par défaut, les produits installés par l'administrateur.
    ;~  
    ;~ Exemples d'utilisation :
    ;- =======================
    ;~ Recherche_registre( "DisplayName","antivirus" )
    ;~ Recherche_registre( "DisplayName","liveupdate","Uninstall" )
    ;-
Func Recherche_registre( const $Quoi , const $Valeur, $Ou = "S-1-5-18" )
    Local $i=0
    Local $fini=0
    Local $DisplayName=""
    Local $SousClef="\"
    Local $a_GuiPos = WinGetPos($LaBojte)
    Local $a_CtrlPos = ControlGetPos($LaBojte,"",$tv_Liste)
    Local $ToolTipX = $a_GuiPos[0]+$a_CtrlPos[0] + 60
    Local $ToolTipY = $a_GuiPos[1]+$a_CtrlPos[1] + 60
    ToolTip("Retreiving information...",$ToolTipX,$ToolTipY,"Please Wait")
    Select
        Case $Ou = "Uninstall"
            ; Information d'installation à rechercher dans la partie... UnInstall !
            $Ou = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
        Case Else
            ; Information d'installation à rechercher dans la partie des produits installés.
            $Ou = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\" & $Ou & "\Products\"
            $SousClef = "\InstallProperties"
    EndSelect
    Do
        $i = $i + 1
        Local $var = RegEnumKey($Ou, $i)
        If @error Or $Install_Nbr >= $max_retour Then
            $fini=True
            If $Install_Nbr >= $max_retour Then
                ;MsgBox( 64,"Nombre maximal de recherche atteint","Il y a trop de correspondance... Seules les " & $max_retour & " premières sont présentées.",1)
                ToolTip("")
                Sleep(250)
                ToolTip("Il y a trop de correspondance... Seules les " & $max_retour & " premières sont présentées.",$ToolTipX, $ToolTipY, "Nombre maximal de recherche atteint",1)
                Sleep(1500)
                ControlSend($LaBojte,"",$i_Chercher,"{END}")
            EndIf
        Else
            $Product = RegRead($Ou & $var & $SousClef, $Quoi)
            If StringInStr( $Product , $Valeur ) Then
                If Controle_Deja_Trouve( $var ) = False Then
                    $Install_Val[$Install_Nbr][0] = $var
                    $Install_Clef[0] = $Quoi
                    For $cpt1 = 1  to ( $NbrClef - 1 )
                        $Install_Val[$Install_Nbr][$cpt1] = RegRead($Ou & $var & $SousClef, $Install_Clef[$cpt1] )
                    Next
                    $Install_Nbr = $Install_Nbr + 1
                EndIf
            EndIf
        EndIf
    Until $fini
    ToolTip("")
    Return $Install_Nbr
EndFunc
Edited by SmOke_N
Authors Request

Share this post


Link to post
Share on other sites

Ok... I just did it... from wikipedia because I don't see the "Peanuts cartoons" on the avatar's list... and url to the gif you include in your message is too long for the interface to add avatar from it.

The thing to do there is to right-click the gif image as it appears on this web page, click "Save picture as...", save a copy to your computer with a short file name such as "woodstock.gif", and then go to the My Controls > Change my Avatar.

Das Häschen benutzt Radar

Share this post


Link to post
Share on other sites

@woodstock,

I like this! I've changed it a little bit to make the search dynamic as you type; no need to click the "Chercher" (Search) button.

Sorry, but I've mixed some english in with your french :)

I like your change, really user friendly...

No matter for english, multilanguage are good... and english more universal in computer science.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0