2010-05-17 10 views
5

Chcę ustalić, czy inny program odtwarza dźwięk powyżej określonego progu. Nie szukam sprawdzania ustawień głośności na komputerze lub czegoś w tym stylu. Muszę tylko sprawdzić, czy jakakolwiek aplikacja gra coś wyższego niż to, czego się spodziewam. Czy ktoś wie, czy jest to możliwe i jak to zrobić?Określić, kiedy głośny dźwięk jest odtwarzany w C#

+2

Moja natychmiastowa odpowiedź jest taka, że ​​nie ma "gotowego" sposobu robienia tego z .Net. Prawdopodobnie potrzebujesz dostępu na niższym poziomie do sprzętu dźwiękowego. Nawet wtedy nie wydaje mi się, że można uzyskać rzeczywisty głośność fizyczną, ponieważ można to kontrolować zewnętrznie z komputera (za pomocą pokrętła wolumenu). :) – Anthony

+0

Wydaje mi się, że program, który to zrobi, musiałby zagłębić się w infrastrukturę systemu, np. W pobliżu sterownika karty dźwiękowej. Może DirectX pozwala ci iść tam ... – flq

Odpowiedz

1

Zapoznaj się z projektem this na codeproject. Jest to miernik objętości używający zarządzanego DirectX i napisany w całości w języku C#.

1

Istnieje wiele źródeł możliwego dźwięku na lokalnym komputerze i ostatecznie będą one komunikować się przez system dźwiękowy Windows do miksera i przez kartę dźwiękową. Jedynym sposobem, w jaki znam monitorowanie wszystkich dźwięków w systemie Windows, jest napisanie sterownika filtra przy użyciu zestawu sterowników sterowników urządzeń. To przechwyci wszystkie żądania do systemu dźwiękowego, przejdzie przez dane, które są wysyłane do gry i może ustawić flagi/zapis do dziennika, gdy wykryje duże różnice (gdzie abs (dane [x + 1] - dane [x]) jest dużą wartością).

Rozwój sterowników odbywa się zwykle w C. W Internecie istnieje garść przykładowego kodu, jeśli chcesz jechać tą trasą.

Powiązane problemy