PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
jpl85
Messages postés4Date d'inscriptionmardi 25 novembre 2003StatutMembreDerniè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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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