Audio Endpoint Device - Friendly name

Audio Endpoint Device - Friendly name

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12389

Kako da dobijem Friendly Name Audio Endpoint uređaja ?



Do sada sam probao :
winmm
ManagementObjectSearcher

Najbolje rešenje koje sam video je WASAPI C++ Wrapper, ali ja ne poznajem dovoljno C++ da napišem to sam a primere na koje sam nailazio nisam mogao da iskoristim.

Dakle treba samo da mi se vrati List<string> ili bilo koja druga kolekcija sa tim prijateljskim nazivima uređaja. To nešto takođe treba da razlikuje Recording i Playback uređaje.

Ima li neko ideju ?

Inače glavna aplikacija je WPF projekat, pisan u C#.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Tako nešto nemaš u C#. Moraćeš malo da se poigraš Win32 interfejsima Smile Evo, ovde sam na brzaka sklepao par interfejsa koji će ti poslužiti za nalaženje endpointa. Pogledaj malo dokumentaciju za IMMDeviceEnumerator interfejs.

https://www.mycity.rs/must-login.png



offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12389

Srki_82 ::Tako nešto nemaš u C#. Moraćeš malo da se poigraš Win32 interfejsima Smile Evo, ovde sam na brzaka sklepao par interfejsa koji će ti poslužiti za nalaženje endpointa. Pogledaj malo dokumentaciju za IMMDeviceEnumerator interfejs.

https://www.mycity.rs/must-login.png

Hvala Zagrljaj

Ovo je najjednostavniji i najčistiji kod na koji sam naišao od kad tražim rešenje Very Happy

Ako nekom drugom zatreba, kroz C# se može proći kroz uređaje na ovaj način :

anagementObjectSearcher objSearcher = new ManagementObjectSearcher(            "SELECT * FROM Win32_SoundDevice");     ManagementObjectCollection objCollection = objSearcher.Get();     foreach (ManagementObject obj in objCollection)     {         foreach (PropertyData property in obj.Properties)         {             Console.Out.WriteLine(String.Format("{0}:{1}", property.Name, property.Value));         }     }

Međutim tu nemate friendly device name, već samo hardverske informacije o uređaju :




Drugi način za C# je ovaj : http://stackoverflow.com/questions/29967317/c-shar.....ound-input

Ali postoji problem sa tim kodom, kod mene recimo uopšte ne vraća tačno uređaje a nije ni rešen problem "prekidanja ispisivanja".

Zatim sam našao na par open source projekata koji koriste WASAPI Wrapper pisan u Cpp-u, Screen Recorder i neki drugi projekat "Endpointcontroller" koji sam počeo da prebacujem u DLL sinoć.

U svakom slučaju, trebalo mi je ovo za GUI Wrapper aplikaciju koja menja aktivni uređaj preko malog widgeta na ekranu, uz pomoć jedne druge aplikacije koja kao argument prima naziv uređaja.

U Srkijevom primeru treba samo da filtriram uređaje koji nisu aktivni i da izvučem samo friendly name property za svaki uređaj.


Btw. možda grešim ali mislim da je ova tema na prvoj strani gugleta a sada ima i primer koji radi bez frke, što nije slučaj sa drugim linkovima.

Hvala Srki Ziveli

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12389

Hm, zašto release preset pravi ove fajlove uz DLL i da li su mi oni potrebni ?



Testirao sam bez njih i sve radi OK :

Ko je trenutno na forumu
 

Ukupno su 497 korisnika na forumu :: 3 registrovanih, 0 sakrivenih i 494 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Ageofloneliness, bigfoot, pein