Salve a tutti, come da titolo volevo sapere se esiste una funzione che ti dice quali codec audio l'utente ha installato sul suo computer (mi serve per una specie di player).
Grazie mille.
Salve a tutti, come da titolo volevo sapere se esiste una funzione che ti dice quali codec audio l'utente ha installato sul suo computer (mi serve per una specie di player).
Grazie mille.
Ciao, devi usare WMI. La classe da usare è Win32_CodecFile, ad esempio per la ricerca dei codec audio (puoi anche non filtrarli e farti restituire tutti i codec):
ovviamente prendi solo le property che ti servono...codice:List<SortedList<string,object>> list = new List<SortedList<string,object>>(); foreach (ManagementObject obj in new ManagementObjectSearcher("SELECT * FROM Win32_CodecFile WHERE Group='Audio'").Get()) { SortedList<string,object> listItem = new SortedList<string,object>(); foreach (PropertyData property in obj.Properties) { listItem.Add(property.Name,obj[property.Name]); } list.Add(listItem); }
Devi anche aggiungere la System.Management come riferimento.
Grazie mille, ora lo provo.
ops scusa, cercavi vb... vabbhe tradotto con il traduttore :
poi le liste non è che servano, era solo per vedere le proprietà che ti servono...codice:Dim list As New List(Of SortedList(Of String, Object))() For Each obj As ManagementObject In New ManagementObjectSearcher("SELECT * FROM Win32_CodecFile WHERE Group='Audio'").[Get]() Dim listItem As New SortedList(Of String, Object)() For Each [property] As PropertyData In obj.Properties listItem.Add([property].Name, obj([property].Name)) Next list.Add(listItem) Next
![]()
E' quello che ho fatto anche io col traduttore![]()
No beh, se mi fa un bel listato lo preferisco anche io.
L'unica cosa è il "Get" in fondo che me lo mette tra parentesi graffe... va messo uguale ?
Perchè così non mi pare sintassi di vb.net (almeno io nn le ho mai usate in questo modo) e difatti a me non funziona (stessa cosa per propriety ?).
Grazie ancora
intendi le parentesi quadre[] nel get? si è vb, serve a distinguere eventuali parole chiave, ma proprio li (in quel get) non dovrebbe essere necessario, mentre in property si, ci devono stare per distinguere dalla parola chiave (appunto property).
cosa non funziona del codice?
le parentesi quadre in vb .net servono anche a distinguere ad esempio alcune parole minuscolo - maiuscolo, ad esempio come faresti se dovessi fare una cosa del genere :
dovendo chiamare la classe Enum (maiuscolo) ?codice:enum Tipo a e i o u End Enum enum.GetName(GetType(Tipo), 2)
semplice, così :
codice:[Enum].GetName(GetType(Tipo), 2)