Le script que je vous propose est très simple : Vous renseigner un fichier de configuration .ini, et il ouvre une GUI ou vous pouvez facilement changer toutes les informations de ce fichier.
Pour faire ceci, plusieurs problèmes se posent.
Le plus important concerne les cellules éditables. En effet on ne peut éditer QUE la première colonne. Pas très pratique. On va donc user d'un stratagème : Changer l'ordre des colonnes. Ainsi, on pourra éditer n'importe quelle colonne , dans la limite d'une seule colonne éditable.
Ici, je vais creer la colonne VALEUR en premier, mais elle sera affichée en SECOND, attention de ne pas se perdre

Petit supplément, on va jongler avec les WM_NOTIFY parce que c'est vachement plus drôle

En fait, je voulais une chose : Si une section CRYPTEE est détectée, alors il fallait que je puisse éditer directement la valeur non cryptée. Pour cela, on utilise une INPUTBOX et on insère la nouvelle valeur dans la cellule.
Comme toujours, le script sera plus parlant

Code : Tout sélectionner
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#Include <String.au3>
Global $ini_configure = @ScriptDir & "\parametres.ini"
_GuiEDITini()
Func _GuiEDITini()
    Local $w = 800,$h=600,$int = 3
    Global $hListView,$ArrayCrypt[10]
    Dim $array,$iS = 1,$iC = 0
    GUICreate("ListView Edit Label", $w,$h)
    $hListView = GUICtrlCreateListView("", $int, $int, $w-2*$int, $h-2*$int, BitOR($LVS_EDITLABELS, $LVS_REPORT))
    _GUICtrlListView_SetUnicodeFormat($hListView, False);Use ANSI
    GUISetState()
    ; Add columns
    _GUICtrlListView_InsertColumn($hListView, 0, "Valeur",1200)
    _GUICtrlListView_InsertColumn($hListView, 1, "Paramètre",$w/2.7)
    _GUICtrlListView_SetColumnOrder($hListView, "1|0")
    _GUICtrlListView_SetColumnWidth($hListView,0,$LVSCW_AUTOSIZE_USEHEADER)
    _GUICtrlListView_SetColumnWidth($hListView,0,_GUICtrlListView_GetColumnWidth($hListView,0)-20);Ceci en compensation de la barre Verticale de defilement
    _GUICtrlListView_EnableGroupView($hListView)
    ; Add items
    $Sections = IniReadSectionNames($ini_configure)
    If IsArray($Sections) Then
        For $i = 1 to $Sections[0]
            _GUICtrlListView_InsertGroup($hListView, $iS, $iS, $Sections[$i])
            $array = IniReadSection ( $ini_configure, $Sections[$i] )
            If IsArray($array) Then
                For $j = 1 to $array[0][0]
                    _GUICtrlListView_AddItem($hListView, $array[$j][1])
                    _GUICtrlListView_AddSubItem($hListView, $iC, $array[$j][0], 1)
                    _GUICtrlListView_SetItemGroupID($hListView, $iC, $iS)
                    If $Sections[$i] = "Crypt" Then
                        Redim $ArrayCrypt[$array[0][0]]
                        $ArrayCrypt[$j-1] = $iC
                    EndIf
                    $iC+=1
                Next
                $iS += 1
            Else
                MsgBox(0,"","Erreur de lecture  des parametres")
                Return 0
            EndIf
        Next
    Else
        MsgBox(0,"","Erreur de lecture  du fichier de configuration")
        Return 0
    EndIf
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    Do
        sleep(20)
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    Return 1
EndFunc   ;==>_Main
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $LVN_BEGINLABELEDITA, $LVN_BEGINLABELEDITW ; Start of label editing for an item
                    $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
                    $id = _ArraySearch($ArrayCrypt,Int(DllStructGetData($tInfo, "Item")))
                    If $id <> -1 Then
                        $rep = InputBox("","Ce champ est crypté. Veuillez donner la nouvelle valeur ci-dessous.",_StringEncrypt(0,_GUICtrlListView_GetItemText($hListView,Int(DllStructGetData($tInfo, "Item"))), "12*/#Max987²", 2))
                        ;_ArrayDelete($ArrayCrypt,$id)
                        If $rep <> "" Then _GUICtrlListView_SetItemText($hListView,Int(DllStructGetData($tInfo, "Item")),_StringEncrypt(1,$rep, "12*/#Max987²", 2))
                        _GUICtrlListView_CancelEditLabel($hListView)
                        _GuiEDITiniSet(Int(DllStructGetData($tInfo, "Item")))
                    EndIf
                    Return False
                Case $LVN_ENDLABELEDITA, $LVN_ENDLABELEDITW ; The end of label editing for an item
                    $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
                    Local $tBuffer = DllStructCreate("char Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
                    If StringLen(DllStructGetData($tBuffer, "Text")) Then
                        _GuiEDITiniSet(Int(DllStructGetData($tInfo, "Item")),DllStructGetData($tBuffer, "Text"))
                        Return True
                    EndIf
                Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
                    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
                    _GUICtrlListView_EditLabel($hListView,Int(DllStructGetData($tInfo, "Index")))
                    $id = _ArraySearch($ArrayCrypt,Int(DllStructGetData($tInfo, "Index")))
                    If $id <> -1 Then
                        $rep = InputBox("","Ce champ est crypté. Veuillez donner la nouvelle valeur ci-dessous.",_StringEncrypt(0,_GUICtrlListView_GetItemText($hListView,Int(DllStructGetData($tInfo, "Index"))), "12*/#Max987²", 2))
                        If $rep <> "" Then _GUICtrlListView_SetItemText($hListView,Int(DllStructGetData($tInfo, "Index")),_StringEncrypt(1,$rep, "12*/#Max987²", 2))
                        _GUICtrlListView_CancelEditLabel($hListView)
                        _GuiEDITiniSet(Int(DllStructGetData($tInfo, "Index")))
                    EndIf
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
Func _GuiEDITiniSet($ID,$b = "")
    $a = _GUICtrlListView_GetGroupInfo($hListView,_GUICtrlListView_GetItemGroupID($hListView,$ID))
    _GUICtrlListView_SetUnicodeFormat($hListView, TRUE);Use ANSI
    If $b = "" Then $b = _GUICtrlListView_GetItemText($hListView,$ID)
    $c = _GUICtrlListView_GetItemText($hListView,$ID,1)
    _GUICtrlListView_SetUnicodeFormat($hListView, False);Use ANSI"
    IniWrite($ini_configure,$a[0],$c,$b)
EndFunc
 



 
 




