Dateien in/aus Clipboard [ERLEDIGT]
Moderator: Moderatoren
Dateien in/aus Clipboard [ERLEDIGT]
Hallo
ich will eine Art einfachen FileExplorer umsetzen, wie z.B. XPPW32\SOURCE\SAMPLES\BASICS\GUIBROW\FBrowse.exe nun benötige ich noch die Funktionalität eine Datei in die Zwischenablage zu verschieben bzw. einzufügen. Wie das mit Dateiinhalten funktioniert, dass verstehe ich, aber mit einer Datei selbst?
hat das jemand schon umgesetzt?
Grüße Rolf
ich will eine Art einfachen FileExplorer umsetzen, wie z.B. XPPW32\SOURCE\SAMPLES\BASICS\GUIBROW\FBrowse.exe nun benötige ich noch die Funktionalität eine Datei in die Zwischenablage zu verschieben bzw. einzufügen. Wie das mit Dateiinhalten funktioniert, dass verstehe ich, aber mit einer Datei selbst?
hat das jemand schon umgesetzt?
Grüße Rolf
Zuletzt geändert von Rolf am Mi, 11. Nov 2009 15:13, insgesamt 1-mal geändert.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Dateien in/aus Clipboard
Hallo, Rolf.
Du willst vermutlich den (binären) Inhalt einer Datei in die Zwischenablage kopieren, richtig? Dafür müsstest Du m.E. mit "XbpClipboard:RegisterFormat()" ein eigenes Format definieren und das dann AUF JEDEN FALL beim Auskopieren aus der Zwischenablage wieder angeben, da das Clipboard standardmäßig nur wenige Formate "kann". Interessehalber - warum willst Du den Inhalt einer Datei übergeben und nicht einfach ihren Namen mit Pfad?
Du willst vermutlich den (binären) Inhalt einer Datei in die Zwischenablage kopieren, richtig? Dafür müsstest Du m.E. mit "XbpClipboard:RegisterFormat()" ein eigenes Format definieren und das dann AUF JEDEN FALL beim Auskopieren aus der Zwischenablage wieder angeben, da das Clipboard standardmäßig nur wenige Formate "kann". Interessehalber - warum willst Du den Inhalt einer Datei übergeben und nicht einfach ihren Namen mit Pfad?
Herzlich,
Tom
Tom
Re: Dateien in/aus Clipboard
Ja, mir geht es nicht darum Dateien xBase intern zu kopieren, sondern Windows kompatibel
z.B.
Ich stehe in meinem Browser, auf der Zeile C:\temp\test.doc, rechte Maustaste, [Kopieren].
Das Programm schiebt die Datei in die Zwischenablage.
nun Wechsel ich auf den Desktop, rechte Maustaste, [Einfügen].
Datei wird auf den Desktop angelegt.
Unter http://www.vbarchiv.net/workshop/details.php?id=25 wird erstmal Grundsätzliches erklärt mit den entsprechenden DLL aufrufen.
Unter http://www.c-plusplus.de/forum/viewtopi ... 51309.html ist ein C-Beispiel für Drop angegeben. Funktioniert ist aber leider C und das Drag fehlt.
Grüße Rolf
z.B.
Ich stehe in meinem Browser, auf der Zeile C:\temp\test.doc, rechte Maustaste, [Kopieren].
Das Programm schiebt die Datei in die Zwischenablage.
nun Wechsel ich auf den Desktop, rechte Maustaste, [Einfügen].
Datei wird auf den Desktop angelegt.
Unter http://www.vbarchiv.net/workshop/details.php?id=25 wird erstmal Grundsätzliches erklärt mit den entsprechenden DLL aufrufen.
Unter http://www.c-plusplus.de/forum/viewtopi ... 51309.html ist ein C-Beispiel für Drop angegeben. Funktioniert ist aber leider C und das Drag fehlt.
Grüße Rolf
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Dateien in/aus Clipboard
soweit klarRolf hat geschrieben:Ich stehe in meinem Browser, auf der Zeile C:\temp\test.doc, rechte Maustaste, [Kopieren].
Das Programm schiebt die Datei in die Zwischenablage.
nun Wechsel ich auf den Desktop, rechte Maustaste, [Einfügen].
also bei mit wird eine Verknüpfung auf den Desktop angelegt wie mit ShellLinkCreate().Rolf hat geschrieben:Datei wird auf den Desktop angelegt.
Nur mit Shift Drag/Drop "verschiebe" ich die Datei.
Es wird ja immer von Datei Handle gesprochen, also sollte SHfile (Phil Idle) die richtigen API Funktionen haben.Rolf hat geschrieben:Unter http://www.vbarchiv.net/workshop/details.php?id=25 wird erstmal Grundsätzliches erklärt mit den entsprechenden DLL aufrufen.
Unter http://www.c-plusplus.de/forum/viewtopi ... 51309.html ist ein C-Beispiel für Drop angegeben. Funktioniert ist aber leider C und das Drag fehlt.
auch Pablo könnte mit ShFileOperation() Functionen in die selbe Richtung gehen.
gruss by OHR
Jimmy
Jimmy
Re: Dateien in/aus Clipboard
Hallo Jimmy
hab nach shFile gesucht und in folderBrow.zip bei Alaska\Downlod\Phils gefunden.
Habe aber keine Funktionen für mein Problem gefunden.
Da Problem ist wieder die Zeit, so dass ich nicht weiter experimentieren kann.
Wir haben es jetzt so umgesetzt, dass wir mit dem XbpFileDialog die Dateien hinzufügen bzw. speichern.
Ich möchte noch den letzten Stand weiter geben: Und noch eine C-Exe die eine Datei in die Zwischenablage schiebt z.B. Runshell( "c:\Temp\test.bmp","Clipboard.exe",.t.) Sollte es irgendwelche Copyright Probleme mit den Anhängen geben bitte ich die Moderatoren diese ggf. zu entfernen.
Liebe Grüße Rolf
hab nach shFile gesucht und in folderBrow.zip bei Alaska\Downlod\Phils gefunden.
Habe aber keine Funktionen für mein Problem gefunden.
Da Problem ist wieder die Zeit, so dass ich nicht weiter experimentieren kann.
Wir haben es jetzt so umgesetzt, dass wir mit dem XbpFileDialog die Dateien hinzufügen bzw. speichern.
Ich möchte noch den letzten Stand weiter geben: Und noch eine C-Exe die eine Datei in die Zwischenablage schiebt z.B. Runshell( "c:\Temp\test.bmp","Clipboard.exe",.t.) Sollte es irgendwelche Copyright Probleme mit den Anhängen geben bitte ich die Moderatoren diese ggf. zu entfernen.
Liebe Grüße Rolf
Re: Dateien in/aus Clipboard
Nun bin ich doch noch dran
Habe folgenden Tipp im einem VBForum gefunden http://www.activevb.de/tipps/vb6tipps/tipp0520.html
und diesen wie folgt umgesetzt. Das Problem ist nur ich bekomme den Dateinamen immer leer zurück?
Hat jemand eine Idee was ich noch ändern muss?
Liebe Grüße
Rolf
Habe folgenden Tipp im einem VBForum gefunden http://www.activevb.de/tipps/vb6tipps/tipp0520.html
und diesen wie folgt umgesetzt.
Code: Alles auswählen
#include "dll.ch"
#include "xbp.ch"
#include "appevent.ch"
//------------------------------------------------------------------
DLLFUNCTION OpenClipboard() USING STDCALL FROM USER32.DLL
DLLFUNCTION CloseClipboard() USING STDCALL FROM USER32.DLL
DLLFUNCTION EmptyClipboard() USING STDCALL FROM USER32.DLL
DLLFUNCTION CountClipboardFormats() USING STDCALL FROM USER32.DLL
DLLFUNCTION EnumClipboardFormats( lngFormat ) USING STDCALL FROM USER32.DLL
//------------------------------------------------------------------
DLLFUNCTION IsClipboardFormatAvailable( lngFormat ) USING STDCALL FROM USER32.DLL
DLLFUNCTION GetClipboardData( lngFormat ) USING STDCALL FROM USER32.DLL
DLLFUNCTION DragQueryFileA( hDrop, UINT, lpStr, ch) USING STDCALL FROM SHELL32.DLL
//------------------------------------------------------------------
#define MAX_PATH 260
#define CF_HDROP 15
//------------------------------------------------------------------
FUNCTION GetDragFilelist(oDlg1)
LOCAL hWnd := oDlg1:getHWND()
LOCAL arrFiles := SPACE(260)
LOCAL hDrop := 0 // 'Handle auf die Clipboard-Daten
LOCAL nFiles := 0 //'Anzahl der Dateien in den Daten
LOCAL cFileName := "" //'temporäre Variable
LOCAL T := 0 //'temporäre Variable
LOCAL result := 0 //'temporäre Variable
LOCAL iLenFileName := 0
oClipBoard := XbpClipBoard():new():create()
oClipBoard:open()
//OpenClipboard(hWnd)
if( IsClipboardFormatAvailable( CF_HDROP ) > 0) //Then 'Wenn Daten vom Typ CF_HDROP vorhanden sind
//'Handle auf Daten holen
hDrop = GetClipboardData(CF_HDROP)
Msgbox(Var2Char(hDrop),"Handle hDrop")
//'Anzahl der Dateien abfragen
//VB// nFiles = DragQueryFile(hDrop, -1&, "", 0)
nFiles = DragQueryFileA(hDrop, -1, "", 0)
Msgbox(Var2Char(nFiles), "Dateien in Clipboard") //> 1???
//'Dateiname(T) holen
For T = 0 To nFiles - 1
cFileName = Space(260)//+Chr(0) // 260
iLenFileName = Len(cFileName)//-1
result = DragQueryFileA(hDrop, T, @cFileName, iLenFileName)
//MemoWrit("temp.txt",cFileName)
Msgbox(Var2Char(result))
Msgbox(Var2Char(iLenFileName))
Msgbox(cFileName)
//arrFile(T + 1) = Left(FileName, result)
Next
else
Msgbox("Bitte zuerst eine Datei im WindowsExplorer mit Strg+C kopieren")
endif
//GetDragFilelist = nFiles 'Anzahl der geholten Dateien als Funktionswert zurückliefern
//CloseClipboard 'Clipboard schließen
EmptyClipboard()
oClipBoard:close()
//CloseClipboard(hWnd)
RETURN NIL
Hat jemand eine Idee was ich noch ändern muss?
Liebe Grüße
Rolf
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Re: Dateien in/aus Clipboard
Hallo Rolf,
DLLFUNCTION DragQueryFileA( hDrop, UINT, @lpStr, ch) USING STDCALL FROM SHELL32.DLL
Günter
DLLFUNCTION DragQueryFileA( hDrop, UINT, @lpStr, ch) USING STDCALL FROM SHELL32.DLL
Günter
Re: Dateien in/aus Clipboard
Danke genau das wars,
hab mich gerade noch mit C abgekämft.
Vielen Dank
Nachtrag: hab nun auch die C-Dll fertig mit den Funktionen putFile() und getFileList().
Bei Interesse bitte PN an mich. Ich verwende derzeit auch die weiter oben angehängte .exe.
Hinweise:
- Bitte im Xbase-Quellcode den Rückgabestring mit der Function ZTrim() von
C:\ALASKA\XPPW32\SOURCE\samples\basics\ExtDll\DLLCALL.prg bearbeiten, um den Stringabschluss '\0' abzuschneiden.
- Das öffnen des Clipboards sollte auch erst nach IsClipboardFormatAvailable() erfolgen.
Liebe Grüße
Rolf
hab mich gerade noch mit C abgekämft.
Vielen Dank
Nachtrag: hab nun auch die C-Dll fertig mit den Funktionen putFile() und getFileList().
Bei Interesse bitte PN an mich. Ich verwende derzeit auch die weiter oben angehängte .exe.
Hinweise:
- Bitte im Xbase-Quellcode den Rückgabestring mit der Function ZTrim() von
C:\ALASKA\XPPW32\SOURCE\samples\basics\ExtDll\DLLCALL.prg bearbeiten, um den Stringabschluss '\0' abzuschneiden.
- Das öffnen des Clipboards sollte auch erst nach IsClipboardFormatAvailable() erfolgen.
Liebe Grüße
Rolf