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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top