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