将二进制文件直接写入剪贴板

时间:2010-09-12 01:47:37

标签: vb.net

是否可以在.NET中直接将二进制文件写入剪贴板? (而不是将其写入文件然后复制它?)该文件不是可执行文件,但会粘贴到desktop \文件夹中。例如。

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 pcfFileName=@Filename", 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()

1 个答案:

答案 0 :(得分: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,text可以是String()或String,依此类推。

我知道这些抵消与它是否应该剪切或复制文件有关,但除此之外,剩下的就是一个谜。