2008-11-18 19 views
4

如果用戶從Outlook電子郵件附件將文件複製到Windows中的剪貼板,有沒有什麼辦法可以在VB.NET中獲取該文件的名稱?在VB.NET中獲取從電子郵件附件複製到剪貼板的文件的名稱

如果該文件從Windows資源管理器複製,Clipboard.GetFileDropList有,我可以用得到這個數據,但是當文件從電子郵件附件複製該列表是空的(只有4個可用的格式 - FileGroupDescriptorWFileGroupDescriptorRenPrivateItemFileContents)。

感覺這應該是可能的,因爲我可以將文件粘貼到Windows資源管理器中,並將其粘貼到附件的名稱中。

回答

5

事實證明,您可以從格式爲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 
+0

[`Clipboard.GetDataObject().GetFormats()`](http://msdn.microsoft.com/en-us/library/1745023c.aspx)的[`IDataObject`](http://msdn.microsoft.com/en-us/library/system.windows.forms.idataobject.aspx)將爲您提供所有可用的數據格式。 – SliverNinja 2012-02-21 21:49:49