2010-09-12 35 views
0

是否有可能在.NET中直接寫入二進制文件到剪貼板? (而不是將其寫入文件然後複製它?)該文件不是可執行文件,但將被粘貼到桌面\文件夾中。將二進制文件直接寫入剪貼板

Dim connection As New SqlConnection("Data Source=SERVER\SQL2008;Initial Catalog=NorthPole;Integrated Security=True") 
Dim command As New SqlCommand("SELECT pcfFile FROM Items WHERE [email protected]", connection) 
command.Parameters.AddWithValue("@Filename", filename) 

    connection.Open() 
    Dim FileData As Byte() = DirectCast(command.ExecuteScalar(), Byte()) 
    Dim fileStream As New FileStream(System.IO.Path.GetTempPath & FileName, FileMode.Create) 
    fileStream.Read(FileData, 0, CInt(fileStream.Length)) 
    fileStream.Close() 
    Clipboard.SetDataObject(New DataObject(System.Windows.Forms.DataFormats.FileDrop, FileData), True) 
    connection.Close() 

回答

0

我不確定這是可能的。通過讀取Clipboard.GetDataObject中的所有格式化數據,我可以從信息中收集這些數據(儘管對我來說這是非常不清楚的)。

這是跑在C的根名爲 「LightMap.exe」 可執行:\

「⊘」 表示0

 
Format "Shell IDList Array" contains: "⊘⊘⊘⊘⊘⊘;⊘⊘⊘⊘P�O� �:i��⊘+00�⊘/C:\⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘N⊘2⊘⊘`⊘⊘-=`� ⊘LIGHTY~1.EXE⊘⊘2⊘⊘⊘�-={�-={�⊘⊘⊘L⊘i⊘g⊘h⊘t⊘y⊘M⊘a⊘p⊘.⊘e⊘x⊘e⊘⊘⊘⊘⊘⊘" 
 
Format "FileDrop" contains: "C:\LightyMap.exe" 
 
Format "Preferred DropEffect" contains: "⊘⊘⊘" 
 
Format "Shell Object Offsets" contains: "⊘⊘⊘�⊘⊘⊘⊘⊘⊘⊘⊘⊘⊘" 
一個字節
 
Format "FileName" contains: "C:\LIGHTY~1.EXE" 
 
Format "FileNameW" contains: "C:\LightyMap.exe" 

正如你所看到的,這裏沒有很多有用的信息來表達你想要做的事情,但它確實給了內部的一瞥。

例如,「Shell IDList Array」似乎具有以8.3友好形式嵌入的路徑和朝向末尾的0字節分隔路徑,但是如果路徑很大(可能超過88個字節,例如C: \ Documents and Settings \ username \ Desktop \ LightyMap.exe),它只包含文件名,但不包含路徑,而FileName和FileNameW保持正確。

帶0字節的格式是IO.MemoryStream,文本將是String()或String等等。

我知道偏移量與它是否應該剪切或複製文件有關,但除此之外,其餘都是一個謎。