| |
|
|
Julian Schmidt | Hallo, ich versuche gerade ein Verzeichnis zu kopieren & ersetzen. Als Basis habe ich diesen Quelltext: [...] Mein Ansatz sieht so aus:
SHFileoperation("Copy","C:\Test","C:\Test2",1,1,0)
Proc SHFileoperation
Parameters operation$,File$,File2$,confirm%,recycle%,can%
Declare opstruct#,file#,file2#,title#,operation&
Var FOF_Flag% = 1 | 512 | 2048'FOF_MULTIDESTFILES,FOF_NOCONFIRMMKDIR,FOF_NOCOPYSECURITYATTRIBS
Dim title#,24
string title#,0 = "Fileoperation Progress"
Select upper$(operation$)
CaseOf "RENAME"
operation&=4
CaseOf "COPY"
operation&=2
CaseOf "MOVE"
operation&=1
CaseOf "DELETE"
operation&=3
endselect
case confirm%:confirm%=16
Casenot recycle%:recycle%=64
If can%
FOF_Flag% = FOF_Flag% | confirm% | recycle% | $20 | 8'$20 = FOF_WANTMAPPINGHANDLE 8 = FOF_RENAMEONCOLLISION
Else
FOF_Flag% = FOF_FLAG% | confirm% | recycle%'16 = FOF_NOCONFIRMATION,64 = FOF_ALLOWUNDO
endif
Dim opstruct#,30:Dim file#,(Len(file$)+2):Dim file2#,(Len(file2$)+2)
String file#,0=(file$+Chr$(0)):String file2#,0=(file2$+Chr$(0))
Long opstruct#,0=GetActiveWindow()' Handle des aufrufenden Fensters
Long opstruct#,4=operation&'Welche Dateioperation gemacht wird
Long opstruct#,8=file#' pfrom : hier die Dateien für die Operation
Long opstruct#,12=file2#'pto hier die Zieldateinamen oder 0
Word opstruct#,16=FOF_Flag%
Long opstruct#,18=0'Bei abbruch steht hier 1 nur bei langen Operationen
Long opstruct#,22=0' muss immer Null sein, hier wird handle für SHNameMappings gesetzt bei Kopie
Long opstruct#,26=Title#'Überschrift des Fortschrittsdialogs bei langen Operationen
Var FEHLER&=External("SHELL32","SHFileOperationA",opstruct#)
IF (long(opstruct#,18)=1)
MessageBox("Die Dateioperation wurde abgebrochen!","Abbruch durch Benutzer!",64)
ELSEIF (Fehler& <> 0)
MessageBox(str$(fehler&),"Es ist ein Fehler aufgetreten",16)
EndIf
If val($WinVer)> 5.0
Case LONG(opstruct#,22) <> 0:External("Shell32","SHFreeNameMappings",LONG(opstruct#,22))'min XP
endif
Dispose file#,file2#,opstruct#,title#
Return Fehler&
EndProc
Unter XP funktioniert es perfekt, nur unter Windows 7(egal welche Version) kommt immer....
Wenn ich den Quelltext als Administrator ausführe kommt genaue das gleiche. Was kann ich dagegen machen? |
|
|
| |
|
|
|
| Hi!
Kannste imho nix machen wenn andere Programme Dateien in Benutzung haben ausser eben diese Programme zu beenden. |
|
|
| |
|
|
|
Julian Schmidt | Der Ordner ist aber nicht in Benutzung. Per Windows Explorer kann ich ihn auch ohne Probleme löschen oder umbenennen. Diese Meldung habe ich zuvor noch nie gesehen! Wenn eine Datei in Benutzung ist kommt eig. immer diese Meldung....
Datei wird verwendet - Die Aktion kann nicht abgeschlossen werden, da die Datei geöffnet ist. Schließen Sie die Datei und wiederholen sie den Vorgang... Wiederholen,Überspringen,Abbrechen |
|
|
| |
|
|
|
Andreas Miethe
| Hinweis :
SHFileOperation Function
Copies, moves, renames, or deletes a file system object. This function has been replaced in Windows Vista by IFileOperation. |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 15.11.2011 ▲ |
|
|
|
|
Julian Schmidt | Funktioniert IFileOperation. auch unter WinXP? Anwendungsbeispiel? |
|
|
| |
|
|
|
| Schau mal: [...]
MSDN
Minimum supported client: Windows Vista |
|
|
| |
|
|
|
Julian Schmidt | hmmmm....gibts es auch ein API-Funktion die sowohl unter WinXP und WinVista, Win7 funktioniert? Sonst müsste man eben erst das OS ermitteln und dann die Funktion je nach OS wählen, was wie ich finde zu umständlich wäre... |
|
|
| |
|
|
|
Jörg Sellmeyer | Das wäre nicht das erste Mal seit Windows 1.0... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 15.11.2011 ▲ |
|
|
|
|
Julian Schmidt | hmmm.....schade das es dazu keine einheitliche kompatible Funktion gibt. Da muss ich muss wohl mal hin setzten und was zusammen schreiben ....
Mal schauen wann ich Zeit finde.... spätestens Sonntag |
|
|
| |
|
|