Savoir si on execute dans l'ide ou pas

Résolu
cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 septembre 2011 - 9 sept. 2010 à 22:51
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 10 sept. 2010 à 09:10
Bonjour,

J'avais déjà fait mais je ne me rappelle plus, je développe un ocx et je ne sait plus comment savoir s'il s'exécute dans l'ide ou dans le programme final...

Merci

Guillaume

5 réponses

cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 septembre 2011
10 sept. 2010 à 01:56
Enfaite entre temps j'ai retrouver dans ma petite tête ce que j'avais déjà fait qui marche, c'est tout con,

    If Ambient.UserMode = True Then
        'L'application est en mode d'execution
    Else
        'On est dans l'IDE de VB
    End If


@jack : je ne connaissais pas ta methode...

Guillaume
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 sept. 2010 à 09:10
Non, ton code est correct.

en l'occurrence avoir un comportement spécifique au mode Design de Form et un autre le reste du temps.

Comme par exemple pour n'activer un Timer que si l'on est pas en mode design ^^


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 sept. 2010 à 23:59
Salut
Voilà un exemple que je viens de retrouver dans mon foutoire :
Dans un module :
Option Explicit

' -------------------------------------------------------------------
' Cette fonction (ModeDebug) retournera True si on exécute
'   le programme en mode IDE, en mode création.
'   Elle renvoie False en mode compilé.

' Ce test réside sur l'utilisation de la commande Debug.Assert.
'   Cette commande permet de dire au code de s'interrompre si
'   la formule qui est fournie devient fausse, pour piéger des
'   bugs ou pour suivre de plus prêt ce qui se passe lorsqu'un
'   évenement se produit.
' Cette fonction Debug.Assert ne fonctionne plus en mode compilé,
'   d'où l'astuce de cette fonction.

' -------------------------------------------------------------------
' Utilisation :
' - Insérez ce module à votre projet (*)
' - Dans le form_Load de votre feuille principale, ajoutez cette
'   simple ligne : ModeDebugInit
'   Cela va lancer la fonction
' - Ensuite, pour avoir si on est ou pas en mode création, il
'   suffira de tester 'ModeDebug'
' (*) pour avoir ce module toujours sous la main, mettez le fichier
'     de ce module dans votre répertoire "VB6\Template\Modules".
'     Quand vous irez dans le menu "Projet", "Ajouter un module"
'     (ou un click-droit "Ajouter" dans l'explorateur de projet),
'     vous retrouverez ce module dans la liste de l'onglet "Nouveau"
' -------------------------------------------------------------------

' Variable qui renverra l'état
Public ModeDebug As Boolean
'

' Initialise la fonction Debug.Assert
Public Sub ModeDebugInit()
    ' Ceci ne sera exécuté qu'en mode IDE, pas en EXE
    Debug.Assert EnModeDebug
End Sub

' Si on passe ici, c'est que la commande Debug.Assert est exécutée
' donc que l'on est en mode IDE
Private Function EnModeDebug() As Boolean
    ' C'est le seul endroit où ModeDebug est passé à True
    ModeDebug = True
    ' Passe le résultat True pour ne pas que la commande Assert
    ' fasse stopper le code (sa vraie raison d'être)
    EnModeDebug = True
End Function

Pour l'utilisation, dans une forme par exemple :
Private Sub Form_Load()
    ' Initialise la fonction de détection
    ModeDebugInit
End Sub

Private Sub cdeTeste_Click()
    If ModeDebug Then
        MsgBox "On est en mode création (IDE)"
    Else
        MsgBox "Ce code est compilé (EXE)"
    End If
End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 sept. 2010 à 03:23
vous ne parliez pas de la meme chose...

Je pensais comme Jack, j'avais pige la meme chose et aurai file le meme code, moins documente...

ton test:

If Ambient.UserMode Then

ne concerne pas le 'programme final', ni l'IDE

on peut tres bien avoir cette variable a true, meme dans l'IDE.
En effet, on peut tres bien tester un ocx SANS avoir a le compiler...

le test:
If Ambient.UserMode Then

permet uniquement de savoir si l'on est en mode design dans l'IDE ou pas (ide en execution, ou en OCX/exe compile...)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 septembre 2011
10 sept. 2010 à 04:42
Ha...

Donc pour que mon code soit plus fonctionnel je devrait plutot utilisé le code de jack ?

Par ce que pour le moment ça fonctionne comme je le souhaite...

Guillaume
0
Rejoignez-nous