Если пользователь копирует файл в буфер обмена в Windows из вложения электронной почты Outlook, могу ли я получить имя этого файла в VB.NET?
Если файл копируется из проводника Windows, у Clipboard.GetFileDropList есть данные, которые я могу использовать для его получения, но этот список пуст, когда файл копируется из вложения электронной почты (доступно всего четыре формата - FileGroupDescriptorW, FileGroupDescriptor, RenPrivateItem и FileContents). .
Такое ощущение, что это должно быть возможно, поскольку я могу вставить файл в проводник Windows, и он вставит его с именем вложения.





Оказывается, вы можете получить имя файла из объекта данных в формате FileGroupDescriptor. Однако код немного загадочен:
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
Хороший. Если вам также необходимо извлечь вложение к файлу, перейдите сюда: social.msdn.microsoft.com/Forums/en-US/wpf/thread/…
Clipboard.GetDataObject().GetFormats()изIDataObjectпредоставит вам все доступные форматы данных.