Afficher un msgbox au premier plan

Résolu
quent -  
 quent -
Bonjour,
J'ai fais un programme avec microsoft visual basic 2010 express. ce programme est tout simple : je rentre un nombre d'heure, de minutes et de secondes et il fait le décompte. lorsque j'arrive a la fin, j'affiche un msgbox pour prévenir que c'est la fin. jusque la, aucun probleme.
mon probleme viens du fait que lorsque le décompte se termine et que je travaille sur un autre logiciel a ce moment la, il n'affiche pas la fenetre au premier plan et je ne vois donc pas que c'est terminer.
je n'ai trouvé aucune solution sur internet.

Merci par avance pour vos réponses

18 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Oui c'est possible:

    Form1
       My.Computer.Audio.Play("C:\Windows\Media\Alarm01.wav", AudioPlayMode.BackgroundLoop) 'joue en boucle
            Form2.ShowDialog()


    Form2
       'Arrete la lecture du son
            My.Computer.Audio.Stop()
            Me.Hide()

    1
    1. quent
       
      C'est exactement ce que je voulais, merci beaucoup !
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Pourquoi ne pas jouer un son à la place d'un MsgBox, comme ceci:

       My.Computer.Audio.Play("C:\Windows\Media\Alarm01.wav", AudioPlayMode.WaitToComplete) 'joue complétement, ne s'arrête qu'à la fin du morceau


    le chemin du fichier wave est pour Windows 8.1, a vérifier sur le pc
    0
  3. MrWhitediamond Messages postés 31 Statut Membre 1
     
    Pour créer un MsgBox au premier plan tu dois utiliser une des values suivantes :

    16 --> OK
    17 --> OK + CANCEL
    18 --> ABORT + RETRY + IGNORE
    19 --> YES + NO + CANCEL
    20 --> YES + NO
    21 --> RETRY + CANCEL

    La fenêtre s'affichera en CRITICAL, ce qui signifie en 1re plan mais aussi avec le son windows.

    Exemple de code en vbscript :

    x= MsgBox ("Le Texte de la fenêtre",20,"Le Titre de la fenêtre")
    if x = 6 then //si l'utilisateur clique sur OUI
    .....
    elseif x = 7 then
    .....
    end if
    0
  4. quent
     
    Bonjour et merci de vos réponses,
    pour répondre à cs_Le Pivert, en effet ta méthode marche et c'est donc celle que je vais utiliser si je ne trouve pas d'autre solution mais le problème est que je n'ai toujours le son de mon pc allumé :) (à moins qu'il existe une commande pour allumer automatique le son)

    pour répondre à MrWhitediamond, cela ne résous pas mon problème car tu as fais comme mon code mais en changent le bouton OK en boutons oui et non mais cela n'affiche toujours pas la fenetre en premier plan. par contre tu as parler de s'afficher en critical, je ne sais pas ce que tu voulais dire par la mais cela m'as rappeler qu'il y a un paramètre permettant d'afficher la fenêtre avec un point d'exclamation comme si il y avais une erreur ce qui a peut-être pour effet de l'afficher au premier plan. je n'ai pas pu tester car je ne me rappelle plus de ce paramètre donc si quelqu'un le connait, je pourrais essayer.

    merci encore de chercher à résoudre mon problème.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voila un exemple

         MessageBox.Show("Opération annulée par l'utilisateur!", "Ouverture", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)


    tu mets un point derrière MessageBoxIcon. et tu auras un menu contextuel avec les autres options
    0
    1. quent
       
      Merci,
      j'ai pu tester mais malheureusement ça ne marche pas.
      sinon connais-tu un fonction permettant d'allumer le son de l'ordinateur ou de jouer la sonnerie même si le son est éteint ? (certaines applications le font)
      0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Je m'en doutais!

    Dans l'immédiat je te propose une 2 ème solution:

    Faire ton MsgBox perso avec un form

    Tu vas dans projet- Ajouter un Formulaire Windows.
    Normalement il va se nommer Form2, sinon tu adaptes

    Dans le form1 à la place de l'appel de ton MsgBox tu mets ceci:

      Form2.ShowDialog()


    Et dans ton Form2 tu ajoute un Label et un button avec ce code:

    Public Class Form2
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Me.Hide()
        End Sub
        Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Me.Text = "MsgBox perso"
            Label1.Text = "Ceci est un message" & Environment.NewLine & "c'est la 2ème ligne" & Environment.NewLine & "c'est la 3ème ligne"
            Label1.AutoSize = True
            TopMost = True 'Formulaire s'affiche au dessus des autres
            ControlBox = False
            Button1.Text = "Fermer"
        End Sub
    End Class


    Voilà, bonne programmation
    0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Pour le son, essaie les fichiers commençant par Windows - comme ceci:

    Windows - Alarme batterie

    Voir si ils fonctionnent sans le son
    0
  9. quent
     
    Ta méthode avec la form2 marche parfaitement !!! merci infiniment !
    Je n'ai plus qu'a adapté la fenêtre comme je veux.

    Pour le son j'ai essayer de mettre la sonnerie "Windows - Alarme batterie.wav" mais il plante et dit qu'il ne trouve pas le fichier alors qu'avec "Alarm01.wav", tout se passe bien !
    peut-être qu'il ne peut pas lire les fichiers dont le nom contient des espaces...

    Encore merci !
    0
  10. quent
     
    Bonjour,
    j'aimerais te demander une aide supplémentaire pour mon projet :
    ton idée de rajouté une sonnerie m'a intéresser et je vais donc en mettre une en plus du message. j'aimerais pouvoir avoir le message ouvert en meme temps qu'il y a la sonnerie et que si on ferme le message avant que la sonnerie soit terminer alors on éteint la sonnerie au milieu. Est-ce possible ?
    0
  11. quent
     
    Bonjour,
    Encore une chose : peut on, soit allumer automatiquement le son du pc, soit vérifier si le son du pc est allumé ?
    0
  12. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Non je ne vois pas, édite un nouveau post tu auras plus de réponses !
    0
  13. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Tu as de la chance, j'ai trouvé ce que tu cherches!!!

    Tu mets 3 buttons avec ce code:

    Option Strict On
    Imports System.Runtime.InteropServices
    Public Class Form1
        <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
        End Function
        Const WM_APPCOMMAND As UInteger = &H319
        Const APPCOMMAND_VOLUME_UP As UInteger = &HA
        Const APPCOMMAND_VOLUME_DOWN As UInteger = &H9
        Const APPCOMMAND_VOLUME_MUTE As UInteger = &H8
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Button1.Text = "Monter"
            Button2.Text = "Baisser"
            Button3.Text = "Muet"
        End Sub
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_UP * &H10000, IntPtr))
        End Sub
        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_DOWN * &H10000, IntPtr))
        End Sub
        Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
            SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H200EB0, IntPtr), CType(APPCOMMAND_VOLUME_MUTE * &H10000, IntPtr))
        End Sub
    End Class
    


    Tu cliques sur Muet un seconde fois pour remettre le son. à toi de l'adapter dans ton projet.
    0
    1. quent
       
      Bonjour,
      as-tu tester ce code ?
      parce que moi lorsque je me les lignes
      Option Strict On
      Imports System.Runtime.InteropServices

      il souligne tous les élements de ma form1 et si je ne les met pas il souligne les lignes
      <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
      End Function

      et dans tous les cas il ne peut pas compiler
      0
  14. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bien sur que je l'ai testé!

    voilà, essaie le:

    http://www.cjoint.com/data3/3AjiiXwTTly.htm
    0
  15. quent
     
    Le code que vous m'avez donner marche bien mais j'ai compris ce qu'il ne va pas :
    j'ai les variables h,m et s qui correspondes aux heures, minutes et secondes de mon compte à rebour or ces informations, je les récupère dans des textbox. normalement, il fait bien la conversion string->integer mais avec les lignes
    Option Strict On
    Imports System.Runtime.InteropServices

    il ne veut plus faire la conversion d'un type a un autre. Avez-vous une idée ?
    0
  16. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Normalement tu as tes variables qui affichent l'erreur en rouge, il suffit de faire un clic droit dessus pour la corriger. Sinon le plus simple c'est de supprimer cette ligne

    Option Strict On

    Je mets Option Strict On pour coder proprement, c'est une bonne habitude à prendre

    0
  17. quent
     
    J'ai trouvé ! Il fallait utiliser la fonction CInt() pour convertir ma variable.
    Donc le code que tu m'a donné marche bien mais j'ai un autre problème, c'est que si le son est allumé et que je fait mute, ça éteint le son. Deuxièmement, je peux augmenter et diminuer le son mais je ne peut pas choisir une valeur fixe or moi j'aimerais allumer le son et fixer sa valeur de façon a que ce soit toujours la même et les fonctions que tu m'a donner ne me permettent pas de le faire.
    connait tu un moyen de fixer le son a une certaine valeur ou de connaitre sa valeur actuelle pour augmenter ou diminuer de ce qu'il faut ?
    0
  18. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Ce que tu veux faire c'est une application de contrôle du son. Je pense que pour l'associer à ton MsgBox c'est un peu trop lourd. Je te propose une alternative.

    Quand tu mets ceci pour monter le son, cela supprime le mode muet:

    SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_UP * &H10000, IntPtr))


    Si tu le mets 3 fois cela augmente de 3 fois, j'ai fait l'essai:

      SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_UP * &H10000, IntPtr))
            SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_UP * &H10000, IntPtr))
            SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_UP * &H10000, IntPtr))


    L'avantage avec 3 lignes de code, tu supprimes le mode muet et tu montes le son 3 fois plus fort.

    Bon WE
    0
  19. quent
     
    Bonjour,
    J'ai adapté ton idée pour avoir exactement le volume que je veux :
    je baisse le son 50 fois car le son maximal de mon pc est 100 et la ligne
    SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_DOWN * &H10000, IntPtr))

    baisse de 2, comme ca je suis a 0 et apres j'augmente du nombre de fois que je veux (par exemple 15 fois si je veux un volume de 30) et au passage ça enlève le muet. ça donne :
    For i = 1 To 50
    SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_DOWN * &H10000, IntPtr))
    Next
    For i = 1 To 15
    SendMessage(Me.Handle, WM_APPCOMMAND, CType(&H30292, IntPtr), CType(APPCOMMAND_VOLUME_UP * &H10000, IntPtr))
    Next

    ce n'est pas très optimiser mais ça marche bien.
    merci beaucoup pour ton aide !
    0