2010-09-12 89 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等等。

我知道偏移量与它是否应该剪切或复制文件有关,但除此之外,其余都是一个谜。