2009-09-28 9 views
6

Moja aplikacja musi wygenerować sygnał dźwiękowy w przypadku niepowodzenia sprawdzania poprawności, aby użytkownik (który może znajdować się kilka stóp dalej) mógł go usłyszeć. Chciałbym użyć Console.Beep(), ale jest to unavailable in a x64 environment (see the remarks). Mogą być lub nie mogą być głośniki w/na komputerze, więc nie mogę używać System.Media.SystemSounds.Beep.Play()..Net WinForm System Beep na 64-bitowym systemie operacyjnym

Obecna platforma docelowa to środowisko x86, ale chciałbym mieć możliwość uruchamiania aplikacji również w x64.

Czy istnieje sposób, aby to zrobić, czy powinienem się poddać?

Edytuj: Dodano link do metody.

+0

Może proszę powiedzieć, dlaczego Console.Beep() nie będzie działać na x64 środowiska? –

Odpowiedz

7

Beep has been removed jako natywna funkcja ze wszystkich platform x64 (więc nie ma zarządzanej wersji), there is a connect wydać tę petycję, aby ją zwrócić.

Stosujemy różne sztuczki, aby dowiedzieć się serwery, my remote wysunąć napęd DVD i dysk z tacy otwarty jest jeden szukaliśmy :)

[EDIT]
Larry Osterman ma świetny artykuł na ten temat: What's up with the beep driver in Windows 7

+0

Więc nie ma sposobu na wymuszenie sygnału dźwiękowego na platformie x64? – Stevoni

+1

wygląda na to, może być tam sterownik dźwiękowy innej firmy, ale nie mogę go znaleźć. –

0

Odtwarzanie jednego ze standardowych dźwięków systemu Windows może być lepszym rozwiązaniem. Poniższy artykuł pokazuje jak (to trwa tylko kilka linii):

http://msdn.microsoft.com/en-us/library/4y171b18(VS.100).aspx

Jeśli chciał pozostać w temacie, można sprawdzić rejestr Windows dla obecnego systemu dźwiękowego i grać odpowiedni dźwięk w celu dopasowania Twoja potrzeba.

+0

Nie wiem, czy urządzenie, które będzie używane, będzie miało głośnik lub nie będzie wyciszone (jak moja maszyna), w przeciwnym razie byłoby to dobre dopasowanie. – Stevoni

+0

Wychodząc z perspektywy użytkownika, jeśli nie mam opcji wyciszania denerwujących dźwięków aplikacji, byłbym bardzo sfrustrowany. Nazwałabym opcję oferowania OGROMNEGO bonusu dla użytkownika. To zły pomysł, aby spróbować kontrolować, co słyszy użytkownik, a co pojawia się na ekranie użytkownika. Microsoft przez wiele lat starał się dostroić te możliwości, aby dać użytkownikom pełną kontrolę nad denerwującymi rzeczami. – jrista

+1

To jest prośba użytkownika. Skarżyli się, że nie mogli usłyszeć, gdy wystąpił błąd w poprzedniej wersji. Teraz, gdy mam zadanie aktualizacji, muszę uwzględnić te problemy. – Stevoni

0

Można użyć metody Console.Beep() opisany tutaj: https://msdn.microsoft.com/en-us/library/8hftfeyw(v=vs.110).aspx

upewnić się, że należy uruchomić plik wykonywalny jako administrator (eskalowane przywileje)

+0

Pozwól mi zacytować OP: * "Chciałbym użyć Console.Beep(), ale to jest __unavailable__ w środowisku x64 (patrz uwagi)" *. Następnym razem przeczytaj to pytanie. – Axalo

+0

http://i.imgur.com/Sse3LxD.png Czy kwalifikuje się to jako system operacyjny x64? A może wypróbujesz moją sugerowaną metodę, zanim przyjmiesz, że najpierw nie przeczytałem tego pytania. Oczywiście nie używam systemu Vista ani XP, ale .Beep() działa na systemie operacyjnym x64. – FatherlyNick