![]() |
Direkt auf Portable Media Device kopieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich hab günstig einen MP3-Player von Creative (Zen Vision:M) bekommen. Dieser taucht im Arbeitsplatz unter Windows XP einmal als "Portable Media Device" und als "Systemordner" auf. Ich würde gerne per Delphi-Programm MP3s direkt dort drauf kopieren (der Ordner ist bekannt, s. Screenshot), aber wenn ich mit einem JvDirectoryEdit den entsprechenden Ordner öffne, erhalte ich z. B. beim Portable Media Device im Edit-Feld den Text ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\Creative Zen Vision:M\Media\Music und das Kopieren mit folgender Routine scheitert ("Zielpfad fehlt oder ist ungültig"):
Delphi-Quellcode:
Drag&Drop per Windows-Explorer funktioniert im übrigen.
function Copyfiles(slSource, slTarget: TStringList): integer;
var op: TSHFileOperation; begin op := TSHFileOperation.Create(Self.Handle); try op.Operation := fotCopy; op.Flags := [fofFilesOnly, fofNoConfirmation]; op.SourceList.Assign(slSource); op.TargetList.Assign(slTarget); op.ExecuteOperation; finally Result := op.FileOpResult; op.Free; end; end; Meine Frage ist: Wie spricht man solche Geräte bzw. Ordner mit Delphi an, um Dateien zu kopieren bzw. zu löschen? Gruß Frank |
AW: Direkt auf Portable Media Device kopieren
Hmm, ok,
vielleicht gehts anders: Per Drag&Drop kann ich Ordner mit MP3s in dem in dem Screenshot angezeigten Ordner ablegen, die dann auch auf dem Gerät auftauchen. Gibt es eine Möglichkeit, D&D zu simulieren? (keine Ahnung, wie das aussehen soll, deswegen frag ich ja hier :)) Gruß Frank |
AW: Direkt auf Portable Media Device kopieren
So viel ich weiss, kann man mit der Api nur Datei kopieren, nicht ne ganze Liste!
Wie sollte sie auch. Übrigens musss man auch bei der Übergabe von Ziel und Quelle noch #0 anhängen
Delphi-Quellcode:
Gruss alfold
function CopyDir(const fromDir, toDir: string): Boolean;
var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_COPY; fFlags := FOF_FILESONLY; pFrom := PChar(fromDir + #0); pTo := PChar(toDir + #0); end; Result := (0 = ShFileOperation(fos)); end; |
AW: Direkt auf Portable Media Device kopieren
Mal die Frage: Was steht denn in Result drin und was meint
![]() Bernhard |
AW: Direkt auf Portable Media Device kopieren
Hallo,
so ich hab noch etwas rumgebastelt und folgendes herausgefunden: Die obige Fehlermeldung kam von der DirectoryExists-Prüfung. Wenn diese ausschalte, läuft das Programm weiter, bis zum CopyFiles (das beim Execute auch feststellt, dass der Ordner nicht existiert und nachfragt, ob der Ordner erstellt werden soll) und bricht dann mit der Meldung: Zitat:
Tja...der Pfad existiert aber bis einschließlich "Music", ich kann ihn ja im Verzeichnisdialog vom DirectoryEdit auswählen. Ausserdem kann ich, wie gesagt, Dateien und Verzeichnisse per Drag&Drop rüberziehen. Wenn ich versuche, das Verzeichnis mit ForceDirectories anzulegen, schlägt das fehl (false) und GetLastError() liefert eine 3 zurück. Kann es sein, dass die Pfadbezeichnung ein Anlegen von Verzeichnissen per Programmierung verhindert bzw. dass das Kopieren von Dateien nur mit "echten" Laufwerken, also z. B. "D:\bla...." bzw. mit UNC-Pfaden funktioniert? Edit: Habe gerade festgestellt, dass in der Explorer-Ansicht für besagtes "Music"-Verzeichnis sich keine neuen Verzeichnisse anlegen lassen, nur wenn man Ordner per Drag&Drop rüberzieht, werden diese auch angelegt. Löschen ist aber möglich *kopfkratz* Was nun, hat vielleicht noch jemand einen Tip? Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz