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
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 schematizzatecodice:'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
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

Rispondi quotando