2010-09-12 9 views
0

Est-il possible d'écrire un fichier binaire directement dans le presse-papiers dans .NET? (Plutôt que de l'écrire dans un fichier puis de le copier?), Le fichier n'est pas un exécutable mais sera collé dans le dossier desktop \ par exemple.Écrire un fichier binaire directement dans le presse-papiers

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() 

Répondre

0

Je ne suis pas sûr que ce soit possible. En lisant toutes les données formatées du Clipboard.GetDataObject, j'ai été capable de glaner cela à partir de l'information (bien que ce soit TRÈS clair pour moi).

Cela a été couru avec un exécutable nommé "LightMap.exe" à la racine de C: \

"⊘" désigne un octet de 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" 

Comme vous pouvez le voir, il n'y a pas beaucoup d'informations utiles ici sur ce que vous voulez faire, mais cela donne un aperçu des internes. Par exemple, "Shell IDList Array" semble avoir le chemin incorporé dans une forme conviviale 8.3 et un chemin délimité de 0 octet vers la fin, mais si le chemin est grand (probablement dépasser 88 octets, comme C: \ Documents And Settings \ nom d'utilisateur \ Desktop \ LightyMap.exe), il contient uniquement le nom du fichier mais pas le chemin alors que FileName et FileNameW restent corrects.

Les formats avec 0 octet sont IO.MemoryStream, le texte sera String() ou String, et ainsi de suite.

Je sais que les offsets sont liés à si elle devrait couper ou copier le fichier, mais à part cela, le reste est un mystère.

Questions connexes