Audio Endpoint Device - Friendly name

Audio Endpoint Device - Friendly name

offline
  • Lead Developer ⠀ ⠀⠀⠀⠀⠀⠀ Go 5 Creative
  • Pridružio: 14 Feb 2008
  • Poruke: 12300

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
  • Lead Developer ⠀ ⠀⠀⠀⠀⠀⠀ Go 5 Creative
  • Pridružio: 14 Feb 2008
  • Poruke: 12300

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
  • Lead Developer ⠀ ⠀⠀⠀⠀⠀⠀ Go 5 Creative
  • Pridružio: 14 Feb 2008
  • Poruke: 12300

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 548 korisnika na forumu :: 32 registrovanih, 4 sakrivenih i 512 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Andrija357, babaroga, Brane Petrovic, Crvena Petokraka, Denaya, Doca, Dorcolac2, Drug pukovnik, Georgius2, ivica976, jovan.simovic97, kuntalo, kybonacci, Majstorr, MB120mm, MegaVLAdaR, mercedesamg, Mercury, Mirage 2000N, mnn2, pein, powSrb, RADOVAN.S, ruma, sekspir019, Senne, SOVO515, Toni, VJ, vlada1976sd, Voivoda