Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Tipo di un file per un file manager...

Sto creando un file manager un po' particolare....e ho bisogno adesso di 
poter reperire in qualche modo il tipo di un file. Avete presente la colonna 
"Tipo" dentro esplora risorse quando c'è la visualizzazione Dettagli?
ecco, vorrei trovarla in qualche modo (tipo API o simili)....il software è 
in .NET, ma credo che dovrò usare codice non-managed per poterlo fare, 
giusto?
voi sapete come si può fare? e' possibile, vero?
e per l'icona?
grazie, good coding!!!
-- 
Alletun
"Se ti va di spassartela adesso
Prendi il Vettore oggi stesso."
Terre Desolate - Stephen King 

 e per l'icona?
è tutto oggi che cerco, appena metto il post, ecco che la soluzione si 
presenta! un classico!
dunque, nel progetto .NET ho aggiunto il componente COM Windows Script Host 
Object Model.....a questo punto io scritto la function:
Public Function GetTipoFile(ByVal QualeFile As String) As String
Dim objFileSys As New IWshRuntimeLibrary.FileSystemObject
Return (objFileSys.GetFile(QualeFile).Type)
End Function
così ho risolto il problema. Spero ci sia qualcuno che sappia fare la stessa 
cosa usando codice managed. Mi servirebbe molto, perchè il file manager che 
sto implementando in realtà passa da un server IIS. L'elenco dei files mi 
viene dato dal server da remoto (che potrebbe essere Windows come anche 
Linux/BSD, e quindi l'uso di quella DLL mi fregherebbe). Inoltre, sul server 
normalmente ci sono installati pochi software, e quindi rischio di avere 
descrizioni poco precise, ma per questo problema non ci posso fare nulla.


 e per l'icona?
Sfortunatamente, come hai avuto modo di verificare, in .NET non c'è un 
classe managed che ti permette di recuperare la descrizione e l'icona 
associata ad un file.
Se devi recuperare solo la descrizione di un file, non e' poi un gran 
problema, in quanto la puoi ottenere direttamente dal registry.
1) nel ramo HKEY_CLASSES_ROOT, cerchi la chiave corrispondente 
all'estensione (ad es: '.txt' ed ottieni il classname (Default value)
2) a questo punto, apri il ramo corrispondente al classname, ed ottieni la 
descrizione (sempre tramite il Default value)
Qui, trovi il codice VB6 che implementa i passaggi di cui sopra. 
Trasformarlo in 
VB.NET
 è banale.
"GetFileDescriptionFromReg - Get a file's description from the registry"
http://www.devx.com/vb2themax/Tip/19228
Recuperare l'icona, invece, richiede l'uso dell'API e quindi di P/Invoke.
Al seguente indirizzo, trovi una classe in C# che implementa sia 
l'estrazione dell'icona, sia il recupero della descrizione del tipo di 
file:
"Getting File Icons Using The Shell"
http://vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/Getting_File_Icons_Using_The_Shell/article.asp
In questo modo, non devi far uso di oggetti COM esterni.
Ciao!
-- 
Gianluca Cannalire
Microsoft MVP/MCP - Visual Basic
http://www.visual-basic.it
http://community.visual-basic.it/gianluca


http://vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/Getting_File_Icons_Using_The_Shell/article.asp
grazie soprattutto per il link qui sopra, che fa proprio quello che ho
bisogno. Se avessi un progetto scritto al 99% in 
vb.net
 e avessi bisogno di
usare la classe qui sopra che è in C#, che possibilità ho?
devo convertirmi il codice io, vero?
:-(
good coding!!!
-- 
Alletun
---
"May the Force be with you..."

 devo convertirmi il codice io, vero?
no.
tanto tempo fa avevo postato (vecchio nick) come avevo fatto.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 devo convertirmi il codice io, vero?
Puoi compilare il codice C# in un assemby separato e referenziarlo nel tuo 
progetto.
Altrimenti, se vuoi per forza inglobarlo nel tuo progetto 
VB.NET
, puoi 
utilizzare questo convertitore:
http://www.carlosag.net/Tools/CodeTranslator/Default.aspx


 
http://www.carlosag.net/Tools/CodeTranslator/Default.aspx
grazie per la segnalazione! ieri sera, perň, con la scusa di studiarmi un
po' di C#, mi sono convertito a mano la classe, cosě adesso ho un file
FileIcon.vb che funziona bene. Ho litigato un po' con il casting, con il
tipo di dati uint di C#, ma alla fine funziona tutto bene.
adesso ho un altro problema piů logico, diciamo (ho postato piů sopra questa
mattina).......
