Hallo maximi & Morph,
hier mal ein Beispiel für Copy und Move. aWND das Fenster das die Funktion aufruft z.B. Application.Handle. Bei DoMove wird Datei verschoben. IsAborted wird True wenn der User auf „Abbrechen“ glickt. Und bei den Flags lohnt sich’s mal die
API- Hilfe anzuschauen.
FOF_SILENT steht für keinen Dialog. FOF_NOERRORUI für keine Fehlermeldung anzeigen. FOF_NOCONFIRMMKDIR für keine Nachfrage ob Ordner erstellt warden soll.
Delphi-Quellcode:
function Sh_FileCopyMove(aWND: HWND; const Source,Dest: string; DoMove: boolean;
var IsAborted: boolean; Flags: FILEOP_FLAGS=0): Boolean;
var
fos : TSHFileOpStruct;
s,d: String;
begin
Result:= False;
if (Source='') or (Dest='') then exit;
s:= Source;
d:= Dest;
if Source[Length(S)]<> #0 then S:=S+ #0;
if D[Length(D)]<> #0 then D:=D+ #0;
ZeroMemory(@fos,SizeOf(fos));
with fos do
begin
Wnd:= aWND;
If DoMove then wFunc:= FO_Move
else wFunc:= FO_COPY;
if Flags=0 then fFlags:=FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI
else fFlags:=Flags;
fAnyOperationsAborted:= IsAborted;
pFrom:=PChar(S);
pTo:=PChar(D);
end;
Result:= SHFileOperation(fos)=0;
IsAborted:= fos.fAnyOperationsAborted;
end;
Hier ein Aufruf
Delphi-Quellcode:
var IsAborted: boolean;
begin
If not Sh_FileCopyMove(
Handle; ‘E:\Ablage\Test.jpg’, F:\Neuer Ordner\Test.jpg, False, IsAborted)
then
begin
If IsAborted
then ShowMessage(‘Abbruch durch User’)
else ShowMessage(‘Fehler beim kopieren’);
end;
Gruß gispos