| |

Fortgeschrittene ProgrammierungDatei (-Liste) in die Zwischenablage kopieren | |  | Autor: ThomasA | Datum: 15.03.05 13:47 |
| Hallo Allerseits
Problem:
Ich möchte aus einer Liste im VB-Projekt eine Datei in die Zwischenablage kopieren um sie dann ggf. im Explorer einfügen zu können.
Lösung war:
Es ist wie verhext, da habe ich einen passenden Tipp (CD: VB-Archiv 3) gefunden und dann funktioniert er eigentlich nicht so richtig. Denn die Datei wird zwar erst kopiert, aber nach dem Einfügen in den Explorer wird sie an der Orginalstelle gelöscht, also nicht wie kopieren, sondern wie ausschneiden!
Übrigens ich habe den Code, galt für die Auswahl mehrerer Dateien aus einer Liste für nur eine Datei kopieren abgeändert.
Hier jetzt der Code:
============= Modul =============
'Benötigte API's zum Kopieren einer Datei oder mehrerer in die Zwischenablage
Public Declare Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function SetClipboardData Lib "user32" _
(ByVal wFormat As Long, ByVal hMem As Long) As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
'Zeiger auf die Dateiliste im Speicher
Public Declare Function GlobalAlloc Lib "kernel32" _
(ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Public Declare Function GlobalFree Lib "kernel32" _
(ByVal hMem As Long) As Long
Public Declare Function GlobalLock Lib "kernel32" _
(ByVal hMem As Long) As Long
Public Declare Function GlobalUnlock Lib "kernel32" _
(ByVal hMem As Long) As Long
Public Declare Sub CopyMem Lib "kernel32" Alias _
"RtlMoveMemory" (Destination As Any, Source As Any, _
ByVal Length As Long)
Public Type POINTAPI
x As Long
y As Long
End Type
Public Type DROPFILES
pFiles As Long
pt As POINTAPI
fNC As Long
fWide As Long
End Type
'Konstanten
Public Const GMEM_MOVEABLE = &H2
Public Const GMEM_ZEROINIT = &H40
Public Const CF_HDROP = &HF
==================================
============= Form ===============
Private Sub Menü_Kopieren_Click()
'Der Dateipfad, bei mir aus einem ListView => siehe den tollen Tipp aus: www.vb-fun.de / Tipp 0326
DateiPfad = PfadProgramm & TreeViewEintrag & "\" & ListView1.SelectedItem
'*******
Dim sFiles As String
Dim pTmp As Long
Dim hTmp As Long
Dim sPath As String
Dim DROPFILES As DROPFILES
'Dateipfad erstellen (doppelt-Null-terminiert)
sFiles = DateiPfad & vbNullChar & vbNullChar
'Clipboard öffnen
If OpenClipboard(0&) Then
'Inhalt der Zwischenablage löschen
EmptyClipboard
'Zeiger auf Dateiliste erstellen und im Speicher ablegen
hTmp = GlobalAlloc((GMEM_MOVEABLE Or GMEM_ZEROINIT), _
Len(DROPFILES) + Len(sFiles))
If hTmp Then
pTmp = GlobalLock(hTmp)
DROPFILES.pFiles = Len(DROPFILES)
Call CopyMem(ByVal pTmp, DROPFILES, Len(DROPFILES))
Call CopyMem(ByVal (pTmp + Len(DROPFILES)), ByVal sFiles, Len(sFiles))
Call GlobalUnlock(hTmp)
'In die Zwischenablage
If SetClipboardData(CF_HDROP, hTmp) Then
Else
MsgBox "Fehler beim Kopieren in die Zwischenablage!", vbCritical, App.ProductName
End If
End If
'Clipboard schliessen
Call CloseClipboard
End If
End Sub
==================================
So, und nun wie immer die große Frage, wo liegt der Fehler? Ich habe schon einige Stunden damit verbracht, aber, naja.
Gruß - Thomas. |  |
 Datei (-Liste) in die Zwischenablage kopieren | 852 | ThomasA | 15.03.05 13:47 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|