Alors voilà j'essaie de faire en sorte de lancer les logiciels présente dans une listview mais celui ci prend toujours le derniere logiciel présent dans la listview
Et encore une autre chose, je n'arrive pas à mettre en place : quand je choisis 2 logiciel à installer, j'aimerais qu'il en lance 1 et dès qu'il a fini de s'installer il lance le prochain
Voici mon code :
► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>
#include <Array.au3>
$ScriptDir = "****"
Global $ini = @ScriptDir & "\programme.ini"
Global $image = @ScriptDir & "****"
Global $fDblClk = False
Global $aLV_Click_Info
$dll = DllOpen("user32.dll")
#Region ### START Koda GUI section ### Form=T:\cstf\mainForm.kxf
;***************************************************************
; Création d'une interface
;***************************************************************
$monprogramme = GUICreate("Mon Programme", 793, 440) ;, 285, 175)
$Label1 = GUICtrlCreateLabel("Liste des programmes", 8, 8, 158, 20) ; titre liste des programmes
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") ; ajouter image
$executer = GUICtrlCreateButton("Executer", 648, 304, 121, 41) ; bouton excuter
$quitter = GUICtrlCreateButton("Quiter", 648, 352, 121, 41) ; bouton quitter
$ajouter = GUICtrlCreateButton(" Ajouter", 648, 32, 121, 41) ; bouton ajouter
$supprimer = GUICtrlCreateButton("Supprimer", 648, 128, 121, 41) ; bouton sauvegarder
$sauver = GUICtrlCreateButton("Sauver", 648, 176, 121, 41) ; bouton sauver
$Pic1 = GUICtrlCreatePic($image, 16, 360, 545, 65) ; image clemessy
$Pic2 = GUICtrlCreatePic("", 648, 224, 121, 73) ; image logiciel
$Label2 = GUICtrlCreateLabel("Version 1.00", 560, 392, 77, 20) ; version 0.99
$modifier = GUICtrlCreateButton("Modifier", 648, 80, 121, 41) ; bouton modifié
$ListView1 = GUICtrlCreateListView("|Nom|Programme", 8, 40, 625, 313) ; colonne checkbox,nom,programme
Global $hlistview1 = GUICtrlGetHandle($ListView1)
; mise a jour des images
GUICtrlSetImage($ajouter, @ScriptDir & "\image\add.ico", 0)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 50)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 500)
_charger_la_liste_avec_le_fichier_param()
GUISetState(@SW_SHOW)
; Look for double clicks
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
#EndRegion ### END Koda GUI section ###
$nom = ""
$programme = ""
Global $iCode
_griser()
While 1
$nMsg = GUIGetMsg()
If $nMsg <> 0 And $nMsg <> -11 Then
EndIf
Switch $nMsg
Case $executer
MsgBox(0, "Lancement du programme", "Lancement de " & $nom )
Run($iIndex)
Case $ajouter
$nom = ""
$programme = ""
If _ajoutprogramme($nom, $programme) == True Then ; lance la fonction ajoutprogramme
GUICtrlCreateListViewItem("X" & "|" & $nom & "|" & $programme, $ListView1) ; ajout des information du programme au listview, section par section
_griser()
EndIf
Case $modifier
Local $aItem, $sText
Local $count
$iIndex = _GUICtrlListView_GetSelectedIndices($ListView1)
$count = _GUICtrlListView_GetItemCount($ListView1)
Local $aArray[$count + 1]
For $I = 0 To _GUICtrlListView_GetItemCount($ListView1)
$aArray[$I] = _GUICtrlListView_GetItemTextArray($ListView1, $I)
Next
$ii = $aArray[$iIndex]
$select = $ii[1]
$nom = $ii[2]
$programme = $ii[3]
If _modificationpro($nom, $programme) == True Then
_GUICtrlListView_SetItem($ListView1, $select, $iIndex, 0)
_GUICtrlListView_SetItem($ListView1, $nom, $iIndex, 1)
_GUICtrlListView_SetItem($ListView1, $programme, $iIndex, 2)
_griser()
EndIf
Case $sauver
_sauvegarder()
Case $supprimer
_supprimer()
_griser()
Case $ListView1
Case $GUI_EVENT_CLOSE
_sauvegarder()
Exit
Case $quitter
_sauvegarder()
Exit
EndSwitch
If $fDblClk Then
$fDblClk = False
Local $aItem, $sText
Local $count
$iIndex = $aLV_Click_Info[0]
$count = _GUICtrlListView_GetItemCount($ListView1)
Local $aArray[$count + 1]
For $I = 0 To _GUICtrlListView_GetItemCount($ListView1)
$aArray[$I] = _GUICtrlListView_GetItemTextArray($ListView1, $I)
Next
$ii = $aArray[$iIndex]
$select = $ii[1]
If $select == "X" Then
$select = ""
Else
$select = "X"
EndIf
_GUICtrlListView_SetItem($ListView1, $select, $iIndex, 0)
_griser()
EndIf
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
If HWnd(DllStructGetData($tNMHDR, "hWndFrom")) = $hlistview1 And DllStructGetData($tNMHDR, "Code") = $NM_DBLCLK Then
$aLV_Click_Info = _GUICtrlListView_SubItemHitTest($hlistview1)
If $aLV_Click_Info[0] <> -1 Then $fDblClk = True
EndIf
Return $GUI_RUNDEFMSG
EndFunc
;***************************************************************
; Griser les boutons
;***************************************************************
Func _griser()
$iIndex = _GUICtrlListView_GetSelectedIndices($ListView1) ; regarde si une ligne est selectionné
If $iIndex == "" Then
GUICtrlSetState($modifier, $GUI_DISABLE)
GUICtrlSetState($supprimer, $GUI_DISABLE)
Else
GUICtrlSetState($modifier, $GUI_ENABLE)
GUICtrlSetState($supprimer, $GUI_ENABLE)
EndIf
$nombre_item = _GUICtrlListView_GetItemCount($ListView1)
GUICtrlSetState($executer, $GUI_DISABLE)
For $I = 1 To $nombre_item
$actif = _GUICtrlListView_GetItemText($ListView1, $I - 1, 0)
If $actif == "X" Then
GUICtrlSetState($executer, $GUI_ENABLE)
Return
EndIf
Next
EndFunc ;==>_griser
;***************************************************************
; Ajouter programme
;***************************************************************
Func _ajoutprogramme(ByRef $nom, ByRef $programme) ; lance la fentre dialogue 1
GUISetState(@SW_DISABLE, $monprogramme)
$Dialogueajout = GUICreate("ajouter un programmeccc", 487, 164, -1, -1, -1, -1, $monprogramme) ;, 400, 300) ;, $WS_EX_TOPMOST, $monprogramme) ;, $WS_POPUPWINDOW)
$GroupBox1 = GUICtrlCreateGroup("", 18, 9, 437, 102)
$Label1 = GUICtrlCreateLabel("Nom", 32, 32, 33, 20)
$Input1 = GUICtrlCreateInput("", 80, 32, 281, 24)
$Input2 = GUICtrlCreateInput("", 80, 64, 281, 24)
$Label2 = GUICtrlCreateLabel("Fichier", 32, 64, 44, 20)
$parcourir = GUICtrlCreateButton("Parcourir", 368, 64, 73, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$valider = GUICtrlCreateButton("Valider", 246, 122, 92, 31)
$cancel = GUICtrlCreateButton("&Cancel", 351, 122, 92, 31)
GUISetState(@SW_SHOW)
Local $ajout_nom_du_programme = $Input2
While 1
$nDialogueajout = GUIGetMsg()
Switch $nDialogueajout
Case $parcourir
Local $ajout_choixfichier = FileOpenDialog("Fichier à ajouter", "****", "Tous (*.*)", 4, "", $Dialogueajout)
If $ajout_choixfichier <> "" Then
GUICtrlSetData($Input2, $ajout_choixfichier)
EndIf
Case $valider
$nom = GUICtrlRead($Input1)
$programme = GUICtrlRead($Input2)
GUIDelete($Dialogueajout) ;enlever fenetre dialogue
GUISetState(@SW_ENABLE, $monprogramme)
Return True
Case $GUI_EVENT_CLOSE
GUIDelete($Dialogueajout) ;enlever fenetre dialogue
GUISetState(@SW_ENABLE, $monprogramme)
Return False
Case $cancel
GUIDelete($Dialogueajout) ;enlever fenetre dialogue
GUISetState(@SW_ENABLE, $monprogramme)
Return False
EndSwitch
WEnd
EndFunc
;***************************************************************
; Modifier chemin du programme
;***************************************************************
Func _modificationpro(ByRef $nom, ByRef $programme) ;fonction modifier programem
$Dialogueajout = GUICreate("modifier un programme", 487, 164, -1, -1, -1, -1, $monprogramme) ; , 400, 300) ;, $WS_EX_TOPMOST, $monprogramme) ;, $WS_POPUPWINDOW)
$GroupBox1 = GUICtrlCreateGroup("", 18, 9, 437, 102)
$Label1 = GUICtrlCreateLabel("Nom", 32, 32, 33, 20)
$Input1 = GUICtrlCreateInput("", 80, 32, 281, 24)
$Input2 = GUICtrlCreateInput("", 80, 64, 281, 24)
$Label2 = GUICtrlCreateLabel("Fichier", 32, 64, 44, 20)
$parcourir = GUICtrlCreateButton("Parcourir", 368, 64, 73, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$valider = GUICtrlCreateButton("Valider", 246, 122, 92, 31)
$cancel = GUICtrlCreateButton("&Cancel", 351, 123, 93, 31)
GUISetState(@SW_SHOW)
Local $ajout_nom_du_programme = $Input2
GUICtrlSetData($Input1, $nom)
GUICtrlSetData($Input2, $programme)
While 1
$nDialogueajout = GUIGetMsg()
Switch $nDialogueajout
Case $parcourir
Local $ajout_choixfichier = FileOpenDialog("Fichier à ajouter", "****", "Tous (*.*)", 4, "", $Dialogueajout)
If $ajout_choixfichier <> "" Then
GUICtrlSetData($Input2, $ajout_choixfichier)
EndIf
Case $valider
$nom = GUICtrlRead($Input1)
$programme = GUICtrlRead($Input2)
GUIDelete($Dialogueajout) ;enlever fenetre dialogue
Return True
Case $GUI_EVENT_CLOSE
GUIDelete($Dialogueajout) ;enlever fenetre dialogue
Return False
Case $cancel
GUIDelete($Dialogueajout) ;enlever fenetre dialogue
Return False
EndSwitch
WEnd
EndFunc ;==>_modificationpro
;***************************************************************
; Supprimé de la liste et du fichier ini un programme
;***************************************************************
Func _supprimer()
Local $aSelected, $Iitem, $Litem
$aSelected = _GUICtrlListView_GetSelectedIndices($ListView1, True)
If $aSelected[0] > 0 Then
$Iitem = $aSelected[1]
$Litem = _GUICtrlListView_GetItemText($ListView1, $Iitem)
Local $choix_supprimer_programme = MsgBox(4, "supprimer le programme selectionner", "Voulez-vous supprimer definitivement ? " & $Litem)
If $choix_supprimer_programme = 6 Then
Local $chemin_supprimer_programme = IniRead($ini, $Litem, "chemin", "")
FileDelete($chemin_supprimer_programme) ; supprimer definitivement le programme
_GUICtrlListView_DeleteItemsSelected($ListView1)
IniDelete($ini, $Litem) ; on supprime la section du programme selectionner
EndIf
Else
MsgBox(48, "", "Il faut selectionner un fichier dans la liste pour pouvoir le supprimer")
EndIf
EndFunc ;==>_supprimer
;***************************************************************
; Sauver dans le fichier ini .ini
; parcours de la liste et enregistrement de chaque element
;***************************************************************
Func _sauvegarder()
FileDelete($ini)
$actif = True Or False
$nombre_item = _GUICtrlListView_GetItemCount($ListView1)
For $I = 1 To $nombre_item
$actif = _GUICtrlListView_GetItemText($ListView1, $I - 1, 0)
$nom = _GUICtrlListView_GetItemText($ListView1, $I - 1, 1)
$programme = _GUICtrlListView_GetItemText($ListView1, $I - 1, 2)
IniWrite($ini, $nom, "actif", $actif)
IniWrite($ini, $nom, "Nom", $nom)
IniWrite($ini, $nom, "Programme", $programme)
Next
EndFunc ;==>_sauvegarder
;***************************************************************
; Charge le .ini
;***************************************************************
Func _charger_la_liste_avec_le_fichier_param()
If FileExists($ini) Then
Local $list = IniReadSectionNames($ini)
For $I = 1 To UBound($list) - 1 ; on lit toute les section du fichier ini
GUICtrlCreateListViewItem(IniRead($ini, $list[$I], "actif", "") & "|" & IniRead($ini, $list[$I], "nom", "") & "|" & IniRead($ini, $list[$I], "Programme", ""), $ListView1) ; ajout des information du programme au listview, section par section
Next
EndIf
EndFunc ;==>_charger_la_liste_avec_le_fichier_param

