2010-05-17 11 views
5

Je veux déterminer si un autre programme joue un son au-dessus d'un certain seuil. Je ne cherche pas à vérifier les paramètres de volume sur l'ordinateur ou quelque chose comme ça. J'ai juste besoin de voir si une application joue quelque chose de plus élevé que ce que j'attends. Quelqu'un sait si c'est possible ou comment le faire?Déterminez quand un son fort est joué en C#

+2

Ma réponse immédiate est qu'il n'y a pas de solution «prête à l'emploi» avec .Net. Probablement besoin d'un accès de niveau inférieur au matériel sonore. Même alors, je ne pense pas que vous pouvez obtenir le volume physique réel joué, car cela peut être contrôlé à l'extérieur de l'ordinateur (en utilisant le bouton volumne). :) – Anthony

+0

Je pense qu'un programme qui fait cela devrait creuser assez profondément dans l'infrastructure du système, comme, à proximité du pilote de la carte son. Peut-être que DirectX vous permet d'y aller ... – flq

Répondre

1

Découvrez le projet this sur codeproject. C'est un compteur de volume utilisant DirectX géré et entièrement écrit en C#.

1

Il existe de nombreuses sources de son possibles sur la machine locale et, en fin de compte, celles-ci communiquent via le système audio Windows vers une console de mixage et sortent via la carte son. La seule façon dont je sais de surveiller tous les sons sur un système Windows est d'écrire un pilote de filtre en utilisant le kit de développement de pilote de périphérique. Cela intercepterait toutes les demandes au système audio, passerait en revue les données qui sont envoyées pour le jeu et pourrait définir des drapeaux/écrire dans un journal lorsqu'il repère de grandes différences (où abs (données [x + 1] - données [x]) est une grande valeur).

Le développement du pilote se fait généralement en C. Il y a beaucoup d'exemples de code disponibles sur le web si vous voulez suivre cette route.

Questions connexes