VB 5/6-Tipp 0520: Alle in der Zwischenablage befindlichen Dateien auslesen
von Achim Neubauer
Beschreibung
Dieser Tipp liest die Dateiliste der Zwischenablage aus, nachdem Dateien mit dem Explorer in den Zwischenspeicher kopiert wurden.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: CloseClipboard, DragQueryFileA (DragQueryFile), GetClipboardData, IsClipboardFormatAvailable, OpenClipboard | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Projekt1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Listen-Steuerelement "List1" ' ' Autor: Achim Neubauer (entrox@freak-style.de) Option Explicit Private Sub Command1_Click() Dim arrFiles() As String Dim T As Long If GetDragFilelist(Me.hwnd, arrFiles) > 0 Then For T = 1 To UBound(arrFiles) List1.AddItem arrFiles(T) Next T End If End Sub Private Sub Form_Load() Dim arrFiles() As String Dim T As Long If GetDragFilelist(Me.hwnd, arrFiles) > 0 Then For T = 1 To UBound(arrFiles) List1.AddItem arrFiles(T) Next T End If End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '--------- Anfang Modul "Module1" alias Module1.bas --------- ' ' Autor: Achim Neubauer (entrox@freak-style.de) Option Explicit Public Declare Function IsClipboardFormatAvailable Lib "user32" ( _ ByVal wFormat As Long) As Long Public Declare Function OpenClipboard Lib "user32" ( _ ByVal hwnd As Long) As Long Public Declare Function GetClipboardData Lib "user32" ( _ ByVal wFormat As Long) As Long Public Declare Function DragQueryFile Lib "shell32.dll" _ Alias "DragQueryFileA" ( _ ByVal hDrop As Long, _ ByVal UINT As Long, _ ByVal lpStr As String, _ ByVal ch As Long) As Long Public Declare Function CloseClipboard Lib "user32" () As Long Public Const CF_HDROP = 15 Public Const MAX_PATH As Long = 260 Public Function GetDragFilelist(Handle As Long, arrFile() As String) As Long Dim hDrop As Long 'Handle auf die Clipboard-Daten Dim nFiles As Long 'Anzahl der Dateien in den Daten Dim FileName As String 'temporäre Variable Dim T As Long 'temporäre Variable Dim result As Long 'temporäre Variable ReDim arrFile(0) If IsClipboardFormatAvailable(CF_HDROP) Then 'Wenn Daten vom Typ CF_HDROP vorhanden sind Call OpenClipboard(0&) 'Clipboard öffnen hDrop = GetClipboardData(CF_HDROP) 'Handle auf Daten holen nFiles = DragQueryFile(hDrop, -1&, "", 0) 'Anzahl der Dateien abfragen ReDim arrFile(nFiles) For T = 0 To nFiles - 1 FileName = Space(MAX_PATH) result = DragQueryFile(hDrop, T, FileName, Len(FileName)) 'Dateiname(T) holen arrFile(T + 1) = Left(FileName, result) Next T End If GetDragFilelist = nFiles 'Anzahl der geholten Dateien als Funktionswert zurückliefern CloseClipboard 'Clipboard schließen End Function '---------- Ende Modul "Module1" alias Module1.bas ---------- '-------------- Ende Projektdatei Projekt1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von tf_real10 am 20.05.2005 um 12:15
ich suche auch nach der umgekehrten Funktion also den Pfad in die Zwischenablage zu schreiben ist dass irgendwie möglich??
Kommentar von Ernst Nauli am 31.08.2004 um 10:53
Ich suche schon lange den umgekehrten Weg. D.h.
Gibt es auch ein Beispielprogramm um Dateien so ins clipboard zu schreiben, dass sie vom Explorer mit "Einfügen" kopiert werden?
Kommentar von Raanubis am 12.03.2003 um 18:53
Unter VB6 und WinXP funzt es, das prob ist meiner meinung nur die Volle Pfadangabe, aber das kann man ja in nen paar sec ändern.
Achtung Leutz, man sollte vorher dateien markieren und anschliessend mit rechte maustaste und kopieren die Dateien in die Zwischenablage holen bevor man es testet, denn tut man es nicht so kann auch keine Datei ausgelesen werden ;)
Kommentar von Herbert M. am 20.10.2002 um 16:04
das geht doch auch mit Clipboard.getText
bzw. Clipboard.getData