Ottenere il nome del file copiato negli appunti dall'allegato e-mail in VB.NET
Domanda
Se un utente copia un file negli Appunti in Windows da un allegato di posta elettronica di Outlook, esiste un modo per ottenere il nome di quel file in VB.NET?
Se il file viene copiato da Esplora risorse, Clipboard.GetFileDropList
contiene dati che posso usare per ottenerlo, ma tale elenco è vuoto quando il file viene copiato da un allegato e-mail (ci sono solo quattro formati disponibili: FileGroupDescriptorW
, FileGroupDescriptor
, RenPrivateItem
e FileContents
).
Sembra che dovrebbe essere possibile, dato che posso incollare il file in Esplora risorse e incollarlo con il nome dell'allegato.
Soluzione
Si scopre che è possibile ottenere il nome file dall'oggetto dati il ??cui formato è FileGroupDescriptor
. Il codice è un po 'arcano, però:
Dim fileName As New StringBuilder("")
Dim theStream As Stream = Clipboard.GetData("FileGroupDescriptor")
Try
Dim fileGroupDescriptor(512) As Byte
theStream.Read(fileGroupDescriptor, 0, 512)
Dim i As Integer = 76
While fileGroupDescriptor(i) <> 0
fileName.Append(Convert.ToChar(fileGroupDescriptor(i)))
i += 1
End While
Finally
If theStream IsNot Nothing Then theStream.Close()
End Try