Vb6 redémarrage

Résolu
jpl85 Messages postés 4 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 3 décembre 2008 - 26 janv. 2008 à 19:48
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 27 janv. 2008 à 14:13
jpl85
Comment arreter une application VB6 proprement et la relancer immédiatement suite par exemple à un changement de paramètres?
merci

3 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 janv. 2008 à 20:02
salut,

ci-dessous le principe avec une Form contenant 2 boutons (assez grands)

Option Explicit
Dim bMustReload As Boolean 'variable pour savoir si on doit relancer
'
'
'   *- FORM LOAD -*
Private Sub Form_Load()
    Command1.Caption = "quitter sans
redémarrer"
    Command2.Caption = "quitter puis relancer automatiquement"
End Sub
'   *- UNLOAD
-*
Private Sub Form_Unload(Cancel As Integer)
    If bMustReload Then 'on doit
redémarrer
        If IsInIDE Then 'non compilé, inutile de relancer
            MsgBox "en mode compilé, le programme
redémarrerait maintenant"
        Else 'compilé, on relance
l'EXE
            Shell AppPath & App.EXEName & ".exe", vbNormalFocus
        End If
    End If
End Sub
'
'
'   *- BOUTONS -*
Private Sub Command1_Click()
    bMustReload = False
    Unload Me
End Sub
Private Sub Command2_Click()
    bMustReload = True
    Unload Me
End Sub
'
'
'
Private Function IsInIDE() As Boolean
    IsInIDE = (App.LogMode = vbLogAuto)
End Function
Private Function AppPath() As String
    AppPath = App.Path
    If Not (RightB$(AppPath, 2) = "/") Then AppPath = AppPath & "/"
End Function

++
PCPT [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
jpl85 Messages postés 4 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 3 décembre 2008
27 janv. 2008 à 11:30
jpl85

Merci pour votre réactivité.
La solution que vous me donné fonctionne pour une form unique, l'application que je met au point fait appel à de nombreuses form notamment une mdiform que l'on doit fermer avant de relancer, j'ai essayé votre code sur cette même feuille mais ça génère une erreur mémoire.
En fait, ce que je recherche, c'est qu'à la réponse "Voulez vous redémarrer votre programme?" , le logiciel et toutes ses forms se ferment avant de relancer l'appli.
merci de votre réponse
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 janv. 2008 à 14:13
salut,

ajoute à ton projet un module que tu nommeras par exemple Mod_Main

dedans une procédure public impérativement nommée Main

dans ton Main, tu lances ta form principale

dans les options de ton projet, tu choisies ce Main (menu projet > propriété de XXX > objet de démarrage > Main)

dans le mod_Main tu mets les fonctions IsInIDE et AppPath en public

tu ajoutes aussi en public la fonction SafeEnd dispo ici

Option Explicit
'
'
'   *- FORM LOAD
-*
Private Sub Form_Load()
    Command1.Caption = "quitter sans
redémarrer"
    Command2.Caption = "quitter puis relancer automatiquement"
End Sub
'   *- UNLOAD
-*
Private Sub Form_Unload(Cancel As Integer)
'   rien de particulier
End Sub
'
'
'   *- BOUTONS -*
Private Sub Command1_Click()
    Unload Me
End Sub
Private Sub Command2_Click()
    If IsInIDE Then 'non compilé, inutile de relancer
        MsgBox "en mode compilé, le programme
redémarrerait maintenant"
    Else 'compilé, on relance l'EXE
        If MsgBox("Voulez vous redémarrer votre
programme?", vbQuestion + vbYesNo) = vbYes Then
            Call SafeEnd
            Shell AppPath & App.EXEName &
".exe", vbNormalFocus
        End If
    End If
End Sub

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous