| |
|
|
KHR | Hallo miteinander,
wie der Titel schon sagt:
Ein tool mit dem man sich einfach die Dateinamen und Pfade nach Ablage per Drop aus dem Clipboard erhält.
Dazu habe ich Code aus der Quellcodesammlung des MMJ umgestrickt.
Sollte durch die Kommentare eigentlich selbsterklärend sein KompilierenMarkierenSeparierenDateinamen aus Drg&Drop extrahieren
Drag und Drop mit dem Explorer realisieren
PRFellow - Vorlage
Drag&Drop Beispiel mit Profan 6.x (32 Bit)
Original (Beispiel) Autor: Thomas Hölzer
modifiziert zu Drop2Clip Autor: Karl-Heinz Rattay
Bedienungsanleitung
Im Explorer ein oder mehrere Dateien mit der Maus packen
und auf das Drop2Clip-Fenster werfen
Sofort danach stehen die Dateinamen mit Pfad im Clipboard
in Textform zur Verfügung
Def DragAcceptFiles(2) !SHELL32,DragAcceptFiles
Def DragFinish(1) !SHELL32,DragFinish
Def DragQueryFile(4) !SHELL32,DragQueryFileA
Def Sleep(1) !KERNEL32,Sleep
Variablen deklarieren
Declare PFilename#,FileName$
Dim PFileName#,261 Max_Path +1, Vorsicht bei Profan-Strings (nur 255 Zeichen!)
declare DropGesAnzahl&, DropAnzahl&, DropEnde%, DropZaehl&
Trackmenue zusammenstellen
Proc MausMenue
CreateMenu
AppendMenu 101,Clipboard leeren
AppendMenu 109,Programmende
TrackMenu %MouseX, %MouseY
endproc
Fensterstil festlegen
windowstyle 1032
kleines Fenster Rechts obem im die Ecke pflanzen
Window (%MaxX-180),30 - (160),110
Titel für Fenster vergeben
WindowTitle ( Drop here (+@str$(DropGesAnzahl&)+) )
Drag&Drop aktivieren
DragAcceptFiles(%hwnd,1)
Clipboard löschen
ClearClip
GesamtZaehler auf null
DropGesAnzahl& = 0
Durch die Schleife bis beendet wird
WhileNot Dropende%
GetMessage
IF %message =563
IF %PeekMessage =563
Anzahl der abgelegten Dateien bestimmen
Dropanzahl&= DragQueryFile(&WParam,$FFFFFFFF,PFilename#,261)
DropZaehl&=0
Durch die Schleife bis alle Dateien abgearbeitet sind
While DropZaehl&<Dropanzahl&
Einzelne Datei der Reihe nach abarbeiten
DragQueryFile(&WParam,DropZaehl&,PFilename#,261)
Dateinamen und Pfad +[CR]+[LF] im Clipboard ablegen
[CR]+[LF]werden verwendet, daß auch alle möglichen Empfänger
Das Ende der Zeile richtg erkennen,
möglicherweise ergibt das ganze einen doppelten Zeilenvorschub
und dadurch eine Leerzeile zwischen den Dateinamen
PutClip String$(PFilename#,0)+@chr$(13)+@chr$(10)
Zaehler um 1 erhöhen
Inc DropZaehl&
Wend
Drag&Drop ist durch
DragFinish(&WParam)
Anzahl der Dateien aus diesem Durchgang zum Gesamtzähler addieren
DropGesAnzahl& = DropGesAnzahl&+DropAnzahl&
Im Fenster-Titel die Fesamtanzahl einfügen
WindowTitle ( Drop here (+@str$(DropGesAnzahl&)+) )
Menue bei Rechtsklick
Elseif %mousekey = 2
MausMenue
Clipboard löschen und Gesamt-Dateizähler wieder auf Null stzen
elseif %MenuItem = 101
ClearClip Clipboard löschen
DropGesAnzahl& = 0
WindowTitle Drop here (+@str$(DropGesAnzahl&)+)
Menueitem zurücksetzen, sonst wird das clipboard jedesmal geleert
wenn das Fensterchen mit der Maus verlassen wird
SetMenuItem 100
Programm-Ende
elseif %MenuItem = 109
Dropende%=1
EndIf
endwhile
Speicher freigeben
Dispose PFileName#
Drag&Drop deaktivieren
DragAcceptFiles(%hwnd,0)
End
|
|
|
| Gruß Karl-Heinz WIN XP home/Pro / XPROFAN 11 / P2CPP ATMEL + BASCOM Fan | 29.12.2008 ▲ |
|
|
|
|
Dieter Zornow | Funktioniert bei mir aber nur als Exedatei, im Interpreter nicht |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 29.12.2008 ▲ |
|
|
|
|
KHR | Hallo Dieter,
Dieter Zornow
Funktioniert bei mir aber nur als Exedatei, im Interpreter nicht
habs grad nochmal probiert,
funktioniert im Interpreter ( Xp11 ) aks PRC über die Runtime und als EXE |
|
|
| Gruß Karl-Heinz WIN XP home/Pro / XPROFAN 11 / P2CPP ATMEL + BASCOM Fan | 29.12.2008 ▲ |
|
|
|
|
Paul Glatz | |
|
| |
|
|