IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] MessageBox a faire disparaître au bout d'un certain temps


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut [VB6] MessageBox a faire disparaître au bout d'un certain temps
    Ca doit être facile. J'ai bien cherché dans ce forum, mais je sèche.

    J'aimerais que le programme VB ferme automatiquement une boîte MessageBox au bout d'un certain temps.
    Je sais utiliser les timer, mais je ne sais pas comment fermer la boîte par programme
    J'utilise a=MessageBox(0&, "XXX" , "YYY", vbOKOnly)

    Merci pour votre aide

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Je pense pas que cela soit possible avec un message box standard....
    avec Form personalisée peu être...

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Si tu crée une nouvelle form c'est possible, tu met un timer sur la form, et quand il s'exécute, tu la ferme...

    Pour un Msgbox je ne sais pas
    N'oubliez pas de mettre le

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Oui merci, je pense pouvoir, avec une form
    Je préfèrerai avec messagebox
    Peut être récupérer le handle de la boite qui vient de s'ouvrir par GetWindow, puis fermer le fenetre après ca.
    Mais je n'ai pas le détail, et je ne voudrai pas fermer en n'importe quoi en aveugle

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Tu peux toujours tester...

    Crée une petite appli test...
    N'oubliez pas de mettre le

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Voila j'ai trouvé ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       hWnd = GetWindow(GetDesktopWindow(), 5)    
     
        Do While Not hWnd = 0
            TitreFenetre = String(255, 0)
            TitreFenetre = Left(TitreFenetre, GetWindowText(hWnd, TitreFenetre, 255))
            If TitreFenetre = "ABCDEFG" Then GoTo find
            hWnd = GetWindow(hWnd, 2)
        Loop
    Exit Sub
    find:           
        msg_hWnd = hWnd
    A la fin, ce petit prg aura mis dans msg_hWnd le handle de la boite MessageBox dont le titre est ABCDEFG

    Est ce que quelqu'un sait comment fermer cette fenetre, dont on connait maintenant le handle ?

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command1_Click()
    CreateObject("Wscript.shell").Popup "le Texte", 2, "Le Titre"
    End Sub

    bon apres midi
    michel

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Merci Michel

    Et après , par quelle commande ferme-t-on l'objet popup ?

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu as essayé le code ? ... il se ferme tout seul ...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Chez moi, il ne se ferme pas tout seul, je dois cliquer sur OK

    J'ai mis sous le boutton
    CreateObject("Wscript.shell").Popup "le Texte", 2, "Le Titre"

    et rien d'autre dans le code

  11. #11
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Il existe je pense une fonction GetWindowTitle, avec le titre de la fenertre tu peux la fermer ,

    regarde dans le code sur cette page

    http://forums.microsoft.com/MSDN/Sho...19639&SiteID=1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
    Public Function GetWindowHWnd(ByVal WindowName As String) As Long
       GetWindowHWnd = FindWindow(WindowName, vbNullString)
    End Function
    N'oubliez pas de mettre le

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    La function est intéressante et semble remplacer le petit prog plus haut.
    Et comment fermer le fenetre en connaissant son handle GetWindowHWnd ?

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Je vais essayer ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowWindow GetWindowHWnd("ABCDEFG"), SW_HIDE

    où ABCDEFG est le titre de la fenetre

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Si j'ai bien vu

    http://access.developpez.com/faq/?page=Automation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
                                                                    ByVal wParam As Long, _
                                                                    lParam As Any) As Long
    Public Const WM_CLOSE = &H10
    SendMessage app_hWnd, WM_CLOSE, 0, 0
    N'oubliez pas de mettre le

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Voila ou j'en suis. Le probleme est résolu mais avec des points d'interrogations.
    Le code (sans les déclarations des API)
    Private Sub CreeMB_Click()
    Dim lg As Long
    lg = MessageBox(0&, "ABC", "Le Titre", vbOKOnly)
    End Sub

    Private Sub FermeMB_Click()
    GetHwnd ("Le Titre")
    Debug.Print (GetHwnd("Le Titre"))
    SendMessage GetHwnd("Le Titre"), WM_CLOSE, 0, 0
    'ShowWindow msg_hWnd, 0 'fait planter vb
    End Sub

    Private Function GetHwnd(St As String)
    Dim hwnd As Long
    Dim TitreFenetre As String
    hwnd = GetWindow(GetDesktopWindow(), 5)
    Do While Not hwnd = 0
    TitreFenetre = String(255, 0)
    TitreFenetre = Left(TitreFenetre, GetWindowText(hwnd, TitreFenetre, 255))
    If TitreFenetre = St Then Exit Do
    hwnd = GetWindow(hwnd, 2)
    Loop
    GetHwnd = hwnd
    End Function
    GetWindowHWnd = FindWindow(WindowName, vbNullString)
    retourne toujours 0, j'ai donc utilisé la fonction plus haut

    CreateObject("Wscript.shell").Popup "le Texte", 2, "Le Titre"
    Ce popup est censé se fermer tout seul, mais il ne le fait pas chez moi ? Evidemment ca aurait été la solution la plus facile

    Merci a tout le monde

  16. #16
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Je dis peux etre des conneries mais est - ce que ton programme attend pas que le msgbox soit fermé avant de poursuivre l'exécution du code?
    N'oubliez pas de mettre le

  17. #17
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Tu sais a mon avis le plus simple sera de créer une nouvelle feuille avec un timer qui actualise par exemple un label en disant x & "secondes avant fermeture..." ou quelque chose comme ca et qui ferme la fenetre...
    N'oubliez pas de mettre le

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Ce que j'ai proposé plus haut me convient, mais oui c'est aussi une solution, la nouvelle feuille.
    Cela dit je n'ai pas besoin de l'affichage. Je veux seulement que la boite se ferme par programmation : soit sur timer, soit sur un evenement particulier.

    Bonne soirée a tous.

    Eric

  19. #19
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je viens de voir ce sujet .
    Etes-vous certains de ne pas vous égarer ?
    Il me semble bien qu'un msgbox tout simple, une fonction Timer pour la pause et un bon Sendkeys feraient l'affaire !

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Oui , je n'avais pas pensé a Sendkeys
    Voila encore une solution très simple, mais comment envoyer une key à une boite précise pour la fermer, si elle ne vient pas d'être créée, et n'a plus le focus ?
    Cela ne revient-il pas a ce qui est dit plus haut ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/02/2010, 20h30
  2. Réponses: 4
    Dernier message: 18/05/2007, 15h37
  3. update qui bloque au bout d'un certain temps
    Par delaio dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/03/2006, 09h51
  4. Stopper l'exécution d'une fonction au bout d'un certain temp
    Par Eagle959 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/03/2006, 18h16
  5. Fermer une fenêtre au bout d'un certain temps.
    Par cprogil dans le forum Composants VCL
    Réponses: 5
    Dernier message: 27/11/2003, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo