Come posso far suonare il computer in C #?


105

Come faccio a far suonare l'altoparlante interno del computer in C # senza altoparlanti esterni?

Risposte:


193

In .Net 2.0, puoi usare Console.Beep ().

// Default beep
Console.Beep();

È inoltre possibile specificare la frequenza e la durata del segnale acustico in millisecondi.

// Beep at 5000 Hz for 1 second
Console.Beep(5000, 1000);

Per ulteriori informazioni, fare riferimento a http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx


11
Ho appena provato in Win 7 x64 RC e, sebbene l'altoparlante interno non abbia emesso un segnale acustico, è stato emesso un segnale acustico attraverso gli altoparlanti quando li ho collegati e accesi. Immagino sia solo l'altoparlante interno (mobo) che non emette alcun segnale acustico. Grazie per le informazioni @Lck.
a_hardin


3
Dovrebbe funzionare su x64, ma il suono uscirà dai normali altoparlanti (che possono essere disattivati). blogs.msdn.com/larryosterman/archive/2010/01/04/…
Tarnay Kálmán

ho x86 ma non viene riprodotto alcun suono dall'altoparlante interno! Solo altoparlante esterno? !!!!
Rafik Bari

1
@ LorenzCK Questo ... non è vero al 100%? Ho Win7 64 e sono in grado di ascoltare una gamma completa di Beep()frequenze attraverso altoparlanti esterni. Tuttavia, +1 per la parte interna, non me ne sono mai reso conto.
BK

146

Puoi anche usare il relativamente inutilizzato:

    System.Media.SystemSounds.Beep.Play();
    System.Media.SystemSounds.Asterisk.Play();
    System.Media.SystemSounds.Exclamation.Play();
    System.Media.SystemSounds.Question.Play();
    System.Media.SystemSounds.Hand.Play();

La documentazione per questi suoni è disponibile in http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx


Purtroppo questi suoni di sistema richiedono altoparlanti esterni, su cui non è sempre possibile contare. È decisamente bello conoscerli, però!
a_hardin

1
Ora sapendo che le versioni x64 di Windows richiedono che gli altoparlanti ascoltino Console.Beep (), queste opzioni funzioneranno altrettanto bene.
a_hardin

4
Il mio Vista x64 su laptop con altoparlanti integrati non riproduce Console.Beep () ma vanno bene.
Andy Dent



7

È confermato che Windows 7 e le versioni più recenti (almeno 64 bit o entrambe) non utilizzano l'altoparlante di sistema e invece indirizzano la chiamata al dispositivo audio predefinito.

Quindi, l'utilizzo system.beep()in win7 / 8/10 non produrrà il suono utilizzando l'altoparlante di sistema interno. Invece, riceverai un segnale acustico dagli altoparlanti esterni, se disponibili.


Ma non c'è garanzia che funzioni / emetta un segnale acustico tramite la scheda audio. Sulla mia macchina Windows 10 non c'è segnale acustico - la scheda audio funziona ovviamente
hfrmobile

4

Mi sono appena imbattuto in questa domanda mentre cercavo la soluzione per me stesso. Potresti considerare di chiamare la funzione beep di sistema eseguendo alcune cose kernel32.

using System.Runtime.InteropServices;
        [DllImport("kernel32.dll")]
        public static extern bool Beep(int freq, int duration);

        public static void TestBeeps()
        {
            Beep(1000, 1600); //low frequency, longer sound
            Beep(2000, 400); //high frequency, short sound
        }

È lo stesso che eseguiresti con PowerShell:

[console]::beep(1000, 1600)
[console]::beep(2000, 400)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.