Ciao ragazzi sto sviluppando un applicazione client e server che comunicano tra loro e permette la navigazione nelle directory dell' altro computer (in entrambi i sensi).
Funziona tutto, chat, trasferimento file, etc... il problema è che quando avvio la navigazione del client nel server che parte dal desktop, il server riceve il comando ed esegue un ciclo del tipo
codice:
'controlla che il percorso sia stato specificato, altrimenti di default viene impostato il desktop
If PercorsoDaEsplorare.Length = 0 Then
PercorsoDaEsplorare = My.Computer.FileSystem.SpecialDirectories.Desktop
Else
'controlla che il percorso esista nel computer, altrimenti di default viene impostato il desktop
If IO.Directory.Exists(PercorsoDaEsplorare) = False Then
PercorsoDaEsplorare = My.Computer.FileSystem.SpecialDirectories.Desktop
End If
End If
'esegue un ciclo sugli elementi contenuti nel percorso
Dim InfoFile As New System.IO.FileInfo(PercorsoDaEsplorare)
'variabile che contiene directory e file del percorso analizzato
Dim FileSuPercorso As String = ""
'avvia il ciclo
For Each FoundFile As String In My.Computer.FileSystem.GetFiles(PercorsoDaEsplorare, FileIO.SearchOption.SearchTopLevelOnly)
'imposta i parametri recuperati per ogni file
InfoFile = My.Computer.FileSystem.GetFileInfo(FoundFile.ToString)
FileSuPercorso = FileSuPercorso & InfoFile.FullName & "|"
Next
Con il codice sopra riesco a recuperare le informazioni riguardanti i file che poi verranno rielaborate dall'altra parte e visualizzate graficamente. le informazioni sono cosi schematizzate
PercorsoCompletoFileTrovato1|PercorsoCompletoFileT rovato2|PercorsoCompletoFileTrovato3
successivamente vengono trasformate in byte e inviate con tcpclient etc..
l'altro computer esegue uno split in base al seguente carattere separatore "|" e poi visualizza nella proprietà text dei button solo il nome del file con un'altro split in base al carattere "\" e prelevando solo l'ultima stringa
della matrice, così facendo, posso richiedere il trasferimento del file all'altro computer passando come parametro l'intero percorso del file.
IL PROBLEMA: Vorrei visualizzare anche l'icona associata al file quindi modificare il protocollo come segue:
PercorsoCompletoFileTrovatoInByte1,ByteImmagineAss ociata1|PercorsoCompletoFileTrovato2,ByteImmagineA ssociata2
per ricavare l'immagine utilizzo il seguente codice, ma non penso di riuscire a capire come collegare tutti questi elementi tra loro durante il ciclo
codice:
'variabili necessarie per archiviare nell'array dei byte anche l'immagine_
'_ associata alle icone del computer in uso
Dim ImageFile As Icon
Dim MemoryImageStream As System.IO.MemoryStream
Il seguente codice all'interno del ciclo:
'salva l'immagine associata all'icona analizzata in .BMP
MemoryImageStream = New MemoryStream
ImageFile = System.Drawing.Icon.ExtractAssociatedIcon(InfoFile.FullName.ToString)
ImageFile.Save(MemoryImageStream)
Avrei in mente anche un'altra possibilità, che mi andrebbe bene lo stesso e mi farebbe risparmiare byte su banda, recuperare l'icona del file associato nel computer che ha richiesto il file passandogli solo l'estensione. Ma è possibile?
ciao a tutti e grazie in anticipo