Obtenir le nom du fichier copié dans le presse-papiers à partir d’une pièce jointe à un courrier électronique dans VB.NET

Si un utilisateur copie un fichier dans le presse-papiers de Windows à partir d’une pièce jointe à un courrier électronique Outlook, existe-t-il un moyen d’obtenir le nom de ce fichier dans VB.NET?

Si le fichier est copié à partir de l’Explorateur Windows, Clipboard.GetFileDropList contient des données que je peux utiliser pour l’obtenir, mais cette liste est vide lorsque le fichier est copié à partir d’une pièce jointe (quatre formats disponibles: RenPrivateItem , RenPrivateItem , RenPrivateItem et FileContents ).

Il semble que cela soit possible, car je peux coller le fichier dans Windows Explorer et le coller avec le nom de la pièce jointe.

Il s’avère que vous pouvez obtenir le nom de fichier à partir de l’object de données dont le format est FileGroupDescriptor . Le code est un peu mystérieux, cependant:

 Dim fileName As New SsortingngBuilder("") 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