Page 2 sur 2

Re: [R] Section de IniWrite dynamique

Posté : ven. 28 janv. 2011 15:03
par GaRydelaMer
Coucou

j'ai modifier mon code précédant pour intégrer l'exécution. J'ai nommé User_Execute() la fonction que ta appelé Sart_Vm().

Code : Tout sélectionner

Func User_Execute()
    Local $aSelected = _GUICtrlListView_GetSelectedIndices($hWnd_ListView, True)
    If $aSelected[0] > 0 Then
        Local $iItem = $aSelected[1]
        Local $User = _GUICtrlListView_GetItemText($hWnd_ListView, $iItem, 1)
        Local $VM = _GUICtrlListView_GetItemText($hWnd_ListView, $iItem, 2)
        Local $Etat = _GUICtrlListView_GetItemText($hWnd_ListView, $iItem, 3)
        Local $Path = _GUICtrlListView_GetItemText($hWnd_ListView, $iItem, 4)
        ;Run("vboxmanage.exe starvm '" & $VM "'")
        ConsoleWrite("RUN (" & $iItem & "): vm=" & $VM & " nom=" & $User & " Etat=" & $Etat & " Path=" & $Path & @LF)
        Local $Retour_Commande = "OK"
        Switch $Retour_Commande
            Case "OK"
                _GUICtrlListView_SetItemText($hWnd_ListView, $iItem, "Terminer", 3)
            Case "Cancel"
                _GUICtrlListView_SetItemText($hWnd_ListView, $iItem, "Annuler", 3)
            Case Else
                _GUICtrlListView_SetItemText($hWnd_ListView, $iItem, "En Cours", 3)
        EndSwitch
        GUI_UserView()
    EndIf
EndFunc   ;==>User_Execute
Quelques détail car la c& fait rien:
Le retour de la commande modifie le statu dans la liste bien sur il va valoir le récupérer, j'ai pas VirtualBox donc je sais pas comment tu vas avoir le retour.
Mais tu peux lire le retour de la commande Run().

Donc cette partie c a toi de la coder. Petits tuyaux quand même.
Voir l'aide de StdoutRead

Code : Tout sélectionner

Local $PID = Run("vboxmanage.exe starvm '" & $VM "'")
Local $Retour_Commande = ""
While 1
    $Retour_Commande &= StdoutRead($PID)
    If @error Then ExitLoop
Wend
 
à la place de Local $Retour_Commande = "OK"

Re: [R] Section de IniWrite dynamique

Posté : ven. 28 janv. 2011 15:15
par GaRydelaMer
Autre idée aussi.

Lors du lancement de la VBox, tu récupère le PID un identifiant unique du processus.

Il peux être souhaitable de terminer (arrêter la machine virtuelle), le mieux c'est d'ajouter un colonne dans la liste view et d'y mettre le PID dedans pour l'arrêter ensuite avec le contexte menu et vider la valeur.

Tu peux aussi interdire la modification des champs tant qu'une machine est en en cours.

Re: [R] Section de IniWrite dynamique

Posté : lun. 31 janv. 2011 09:28
par Laddy
Bonjour GaRydelaMer
je n'avais pas tout à fait saisie ce que tu voulais faire mais je pense avoir compris.
Modifier le status dans la combox en fonction de son fonctionnement.

Dans mon cas, le status n'indique pas le fonctionnement de la VM, c'est juste une indicateur pour savoir quel utilisateur utilise telle ou telle VM.

Peut être devrais je renommer les status ainsi :
Ouverte -> En cours
Fermer ->Terminer

Code : Tout sélectionner

;fonction accessible par un double clic.
Func Start_Vm()
    Local $aSections, $iItem, $aUser
    Local $aSelected = _GUICtrlListView_GetSelectedIndices($hWnd_ListView, True)
    If $aSelected[0] > 0 Then
        Local $iItem
        $iItem = $aSelected[1]
        Local $Run_VM = _GUICtrlListView_GetItemText($hWnd_ListView, $iItem, 2)
    EndIf
    Run('"' & $PathVirtualBox & 'VBoxManage.exe" startvm ' & $Run_VM, $PathVirtualBox, @SW_HIDE)
    ;ConsoleWrite('"' & $PathVirtualBox & 'VBoxManage.exe" startvm ' & $Run_VM)
EndFunc   ;==>Start_Vm
 
[+] Ajout fonction Start_VM() pour démarrer la VM par un double-clic
[+] Couleurs dans GUI_UserView()
[M] Modification des status

Maintenant je cherche à avoir la couleur dans la listview.
► Afficher le texteCode entier