Srki_82 ::Tako nešto nemaš u C#. Moraćeš malo da se poigraš Win32 interfejsima 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
Ovo je najjednostavniji i najčistiji kod na koji sam naišao od kad tražim rešenje
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
|