2008-12-05 5 views
3

Je suis en train de jouer le son du système Asterisk à partir d'un programme C# avecSystemSounds Jouer ne fonctionne pas

System.Media.SystemSounds.Asterisk.Play(); 

mais pas joue son. Mon système dispose d'un son pour Asterisk et d'autres programmes (non écrits par moi) provoquent la lecture de divers sons système.

Quelqu'un peut-il suggérer des raisons possibles pour cela?

+0

L'un des autres sons du système fonctionne-t-il en utilisant des modifications apportées à ce code? Par exemple. en utilisant Exclamation au lieu d'Asterisk. – RobS

+0

L'enceinte est-elle en mode sourdine? ;) – shahkalpesh

Répondre

4

j'avais ignoré ce problème jusqu'à aujourd'hui. googling a révélé que c'est un problème commun tout à fait et totalement sans rapport avec les appels de jeu .NET.

Ce qui se passe est que pendant que vous pouvez lire/prévisualiser les sons de l'applet Panneau de configuration Sons et périphériques audio, ils ne sont pas lus lorsque les programmes déclenchent les sons. Il semble que ce soit la corruption causée par les installations du programme. Le correctif est assez simple. L'entrée (par défaut) de HKEY_CURRENT_USER dans le registre doit être (valeur non définie). Si c'est autre chose (le mien a été OfficeCompleted), supprimez l'entrée (clic droit et sélectionnez supprimer) et elle sera recréée comme (valeur non définie). Les sons du système devraient alors jouer.

1

Désolé si ce surestime l'évidence ...

  1. Etes-vous sûr est en cours d'exécution cette ligne de code?
  2. Comme le suggère RobS, est-ce que l'un des autres SystemSounds est joué?

J'ai regardé dans le réflecteur. Quel que soit le SystemSound que vous appelez, il renvoie une instance SystemSound initialisée avec le type (par exemple, 0x40 pour Astérix) pour le son du système que vous voulez écouter. Ceci est ensuite passé à la méthode Win32 bool MessageBeep (type int). Importé comme:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] 
internal static extern bool MessageBeep(int type); 

Le retour bool est pas conservé en aucune façon - dire que vous ne pouvez pas l'obtenir :(

Les exceptions ne sont pas avalés de sorte que vous devriez obtenir une si jeté

. l'espoir qui aide (bien que probablement vous dire ce que vous savez déjà)

+0

[Liste des valeurs 'type'] (https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms680356 (v = vs.85) .aspx) –

1

J'ai seulement 8 ans de retard à la fête, mais je viens d'avoir ce problème sur une tablette PC Windows 7. La chose qui l'a réparée? Le classique Restart.

Essayez de redémarrer l'appareil.