[astuce] messagebox qui n'arrete pas le processus courant

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 775 fois - Téléchargée 29 fois

Contenu du snippet

La commande MsgBox permet d'afficher un message à l'écran, mais elle arrête tous les processus qui étaient en cours.
Avec l'API MessageBox, on affiche la même chose, mais les processus qui étaient en cours continuent de tourner.

Code à tester avec 2 CommandButtons, un Timer et un Label.

Vraiment con comme source, mais pas aperçue sur le site ( ou alors noyée dans le flot des générateurs de MsgBox ). Si c'est le cas, désolé pour la pollution. Elle peut être supprimée.
Bref, c'est plutôt son utilisation bien particulière qui m'interpelle ici, car je pensais dur comme fer qu'on était obligé de créer sa propre MessageBox quand on ne voulait pas arrêter les processus.

Source / Exemple :


Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As _
Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As _
Long) As Long

Private Sub Command1_Click()
'   L'appel à la MsgBox traditionnelle arrête tous les processus qui
'   étaient en cours. Regardez donc le Timer dans Label1.
    MsgBox "Le Timer s'arrête"
End Sub

Private Sub Command2_Click()
'   L'appel à l'API MessageBox n'arrête pas les processus qui étaient
'   en cours. Regardez Label1 qui continue de défiler ...
    MessageBox Me.hwnd, "Le Timer ne s'arrête pas.", "API MsgBox", vbOKOnly + vbExclamation
End Sub

Private Sub Form_Load()
'   Initialisation du Timer
    Timer1.Interval = 100
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
'   Le label contient l'heure courante et est raffraichi tous les
'   Timer1.Interval [ms].
    Label1.Caption = Time
End Sub

A voir également

Ajouter un commentaire

Commentaires

78zerocool
Messages postés
22
Date d'inscription
jeudi 13 janvier 2011
Statut
Membre
Dernière intervention
20 juillet 2011

ya encor plus simple tu cree une nouvelle form ...
PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
de mémoire me semble que ce code était bel et bien utile sous XPSP1.
il l'est toujours (rappel : 'MSGBOX' bloque le thread de l'appli, pas 'MessageBox') sous Win2000 SP4

par contre en effet, sous win2003RS2 le MSGBOX classique ne bloque pas l'appli

(pas d'XPSP2 ou 3 à portée de main)
cs_Alain Proviste
Messages postés
908
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
2
moi aussi (j'attends la réponse)
cs_Golard
Messages postés
7
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
23 septembre 2010

"Essayes donc le code proposé. Dans VB6 (même sous XP), mettre une Form avec un Label, 2 boutons, et un Timer..."
Déjà fait avant mon premier commentaire.
J'ai compilé le code de econs sous Vb6 SP5 (Version 8988 VBA: Retail 6.0.8964 Forms3: 11.0.5601)
Sous XP SP2 : pas de blocage, ni par Command1, ni par Command2
Sous Vista SP1 : idem

"... et relis le 1er d'Alain Proviste"
C'est bien le timer de l'application dont la valeur est écrite dans le Label dont je parle.

" Aurais-je loupé quelquechose ? Oui."
Oui... mais quoi ????

Merci Us de ta réponse rapide. Peux-tu toi-même refaire le test?
Je reste pour l'instant interrogatif !!! Et j'attends ta réponse...

Amicalement,
Golard.
us_30
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
" Vrai ou faux ? "
Faux.

" Aurais-je loupé quelquechose ? "
Oui.

Essayes donc le code proposé. Dans VB6 (même sous XP), mettre une Form avec un Label, 2 boutons, et un Timer...

... et relis le 1er d'Alain Proviste, c'est peut-être là ta confusion...

Amicalement,
Us.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.