Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <ListviewConstants.au3>
#include <Array.au3>
Global $ini = @scriptdir & "\testini.ini"
Global $array = _ReadZeIni($ini) ; lecture du ini => 1ère array ($array) pour stocker les infos
If @error Then ; si le ini est absent, corrompu ou vide
FileCopy($ini, @scriptdir & "\test.bak") ; sauvegarde si corrompu
FileDelete($ini) ; recréation nouveau ini
Dim $array[3][2] ; array par défaut
$array[0][0] = "chemin1"
$array[0][1] = @Autoitexe
$array[1][0] = "chemin2"
$array[1][1] = @SystemDir & "\cmd.exe"
$array[2][0] = "chemin3"
$array[2][1] = @SystemDir & "\notepad.exe"
EndIf
; _ArrayDisplay($array)
$gui = GUICreate("listview programmes", 420, 180, 500, 20, -1)
$listview = GUICtrlCreateListView("|" &"soft", 10, 10, 400, 130, $LVS_NOCOLUMNHEADER)
GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 0, 70)
GUICtrlSendMsg($listview, $LVM_SETCOLUMNWIDTH, 1, 320)
; remplissage de la listview
Dim $ligne[UBound($array)] ; 2ème array ($ligne) pour stocker les handles des items
For $i = 0 To UBound($array)-1
$ligne[$i] = GUICtrlCreateListViewItem($array[$i][0] &"|" & $array[$i][1], $listview)
GUICtrlSetImage(-1, $array[$i][1], -1)
Next
$ajoute = GuiCtrlCreateButton("ajoute", 50, 145, 80, 25)
$degage = GuiCtrlCreateButton("supprime", 150, 145, 80, 25)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
_WriteInZeIni($ini)
Exit
Case $degage
$index = ControlListView($gui, "", $listview, "GetSelected")
If $ligne <>"" Then
GUICtrlDelete($ligne[$index])
_ArrayDelete($ligne, $index)
_ArrayDelete($array, $index)
_WriteInZeIni($ini)
EndIf
Case $ajoute
If $ligne = "" Then
Dim $ligne[1]
Dim $array[1][2]
$prevnb = 0
Else
$prevnb = UBound($array)
ReDim $array[$prevnb+1][2]
ReDim $ligne[$prevnb+1]
EndIf
$var = FileOpenDialog("choisir...", @DesktopDir & "\", "softs (*.exe)")
If not @error Then
$array[$prevnb][0] = "chemin" & $prevnb+1
$array[$prevnb][1] = $var
$ligne[$prevnb] = GUICtrlCreateListViewItem($array[$prevnb][0] &"|" & $array[$prevnb][1], $listview)
GUICtrlSetImage(-1, $array[$prevnb][1], -1)
_WriteInZeIni($ini)
;_ArrayDisplay($array, "debug")
EndIf
EndSwitch
Wend
Func _WriteInZeIni($file)
FileDelete($file) ; on peut faire un backup avant
For $i = 0 To UBound($array)-1
IniWrite($file, $i, $array[$i][0], $array[$i][1])
Next
EndFunc
Func _ReadZeIni($file)
$var = IniReadSectionNames($file)
If @error Then
SetError(1)
Return
EndIf
Dim $array[$var[0]][2]
For $i = 1 To $var[0]
$readsection = IniReadSection($ini, $var[$i])
$array[$i-1][0] = $readsection[1][0]
$array[$i-1][1] = $readsection[1][1]
Next
Return $array
EndFunc