VB.NET: Générer un bip

Bonjour,

Je programme en vb.net 2010, et j'aimerais générer un bip.
Je veux pouvoir modifier la fréquence et la durée du son, donc la commande Beep() (qui ne marche d'ailleurs pas, rien ne se passe) ne me sert à rien.
J'ai trouvé un code sur internet, mais une erreur était retournée à chaque fois.

Merci de votre aide.

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour pour voir ce qui ne va pas avec ton code il faudrait le poster.
    Voir ici comment bien utiliser la coloration syntaxique.
    Signaler la ligne qui bug et retranscrire le message d'erreur entier.

    Concernant Beep, chez moi ça marche, qu'as tu essayé?
            System.Media.SystemSounds.Beep.Play()
    

    Il existe aussi
            System.Media.SystemSounds.Asterisk.Play()
            System.Media.SystemSounds.Exclamation.Play()
            System.Media.SystemSounds.Hand.Play()
            System.Media.SystemSounds.Question.Play()
    

    1. Bonjour,

      moi, rien.
      que ce soit seulement avec
      Beep()

      ou avec
      System.Media.SystemSounds.Beep.Play()


      Pour ce qui est du code retournant une erreur, il s'agit de celui-là:

      Private Declare Function APIBeep Lib "kernel32" Alias _
          "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) _
          As Long
      
      Private Sub Command1_Click()
          Dim frequency As Long
          frequency = CLng(250)
          APIBeep frequency, 500
      End Sub


      Source: http://www.vb-helper.com/howto_api_beep.html
      1. Ok, on voit que c'est un code vb6 et le message d'erreur?

        --
      2. PInvokeStackImbalance was detected
        "A call to PInvoke function 'Test!Test.Form1::APIBeep' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature."

        (Test est le nom du projet dans l'erreur)
      3. et
        Console.Beep(500, 500)
        , ca marche?
      4. rien
      5. Apres quelques recherches, il semble que console.Beep se servent du beeper de la carte mère et non des hauts parleurs:
        https://docs.microsoft.com/fr-fr/dotnet/api/system.console.beep?redirectedfrom=MSDN&view=netframework-4.8
        Mais ça ne semble pas être le cas de System.Media.SystemSounds.Beep.Play
        https://docs.microsoft.com/en-us/dotnet/api/system.media.systemsounds.beep?redirectedfrom=MSDN&view=netframework-4.8

        Après tu peux essayer de jouer un wav qui fait ton beep, ici une discussion qui en parle (c'est du C#, mais ça ressemble au VB)
        https://codes-sources.commentcamarche.net/forum/affich-10032463-jouer-un-son-dans-une-application-mais-ca-ne-marche-pas