Datei in Zwischenablage kopieren

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von TRiViUM.

    Datei in Zwischenablage kopieren

    Hi liebe Community,

    ich hatte vor, eine Datei (im Videoformat) mit vb.net in die Zwischenablage zu kopieren, um sie hinterher auf ein anders Laufwerk einfügen zu können.

    Ich habe folgendes probiert:

    VB.NET-Quellcode

    1. Dim Datei() As Byte = File.ReadAllBytes("C:\test.mkv")
    2. Clipboard.SetDataObject(Datei, True)

    Aber im Windows-Context-Menü bleibt mir die Funktion "Einfügen" ausgegraut.

    Ich vermute, dass der Datentyp Byte evtl. falsch ist, allerdings weiß ich nicht, wie ich es richtig umändere.

    Ihr vllt. ?

    Danke ^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TRiViUM“ ()

    TRiViUM schrieb:

    umändere
    Kopiere im Explorer eine Datei in die Zwischenablage und lies dann in Deinem Programm den Typ aus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    wusste zwar nicht genau, wie ich den Typen auslese, habe aber durch Experimentieren den Typen gefunden (glaub ich):

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim DateiListe As New List(Of String)
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. DateiListe.Add("C:\test.mkv")
    5. Dim oDataObject As New DataObject(DataFormats.FileDrop, DateiListe.ToArray)
    6. Clipboard.SetDataObject(oDataObject, True)
    7. End Sub
    8. End Class


    Es geht allerdings nicht ohne die List(Of String).
    Wenn ich die List(Of String) wegmache, und nur einen String als DataObject mit Typ FileDrop erstelle, kann ich zwar im Windows-Explorer auf "einfügen" drücken, es ertönt jedoch der Asterik-Systemsound und nix wurde eingefügt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TRiViUM“ ()

    TRiViUM schrieb:

    glaub ich
    Du sollst nachsehen, was für ein Typ bei .NET ankommt, wenn Du im Explorer eine Datei kopierst. Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Du sollst nachsehen

    Okay, habe ich jetzt auch gemacht, und es sind anscheinend mehrere.

    Ich benutze folgenden Code, um die Zwischenablage-Formate abzurufen:

    VB.NET-Quellcode

    1. ' Alle Inhalte der Zwischenablage abholen:
    2. Dim objDO As DataObject = Clipboard.GetDataObject()
    3. ' Ermitteln von Formatnamen der Inhalte des DataObjects
    4. Dim arrDF As String() = objDO.GetFormats()
    5. ' Mehrzeilige Ausgabe des String-Arrays
    6. TextBox1.Text = Join(arrDF, ControlChars.CrLf)


    Damit bekomme ich (wenn ich eine Datei kopiere) folgende Ausgabe:

    Quellcode

    1. Shell IDList Array
    2. DataObjectAttributes
    3. DataObjectAttributesRequiringElevation
    4. Shell Object Offsets
    5. Preferred DropEffect
    6. AsyncFlag
    7. FileDrop
    8. FileNameW
    9. FileName