代码之家  ›  专栏  ›  技术社区  ›  madlan

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

  •  0
  • madlan  · 技术社区  · 14 年前

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

    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 回复  |  直到 14 年前
        1
  •  0
  •   Kogitsune    14 年前

    我不确定这是可能的。通过从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),则它只包含文件名,而不包含路径,而文件名和文件名仍保留为c奥利特

    字节为0的格式是io.memoryStream,文本可以是string()或string,依此类推。

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