Primeiros nome do arquivo copiado para área de transferência de anexo de email em VB.NET

StackOverflow https://stackoverflow.com/questions/299805

Pergunta

Se um usuário copiar um arquivo para a área de transferência no Windows a partir de um anexo de e-mail Outlook, existe alguma maneira eu posso obter o nome do arquivo em VB.NET?

Se o arquivo é copiado a partir do Windows Explorer, Clipboard.GetFileDropList tem dados que eu posso usar para obter isso, mas essa lista está vazia quando o arquivo é copiado de um anexo de e-mail (há apenas quatro formatos disponíveis - FileGroupDescriptorW, FileGroupDescriptor, RenPrivateItem e FileContents).

Parece que isso deve ser possível, desde que eu pode colar o arquivo no Windows Explorer e cola-lo com o nome do anexo.

Foi útil?

Solução

Acontece que você pode obter o nome do arquivo do objeto de dados cujo formato é FileGroupDescriptor. O código é um pouco misterioso, no entanto:

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top