Forum | | | | - Seite 1 - |
| Julian Schmidt | Wie kann man ein Verzeichnis am elegantesten mit allen Unterverzeichnissen und allem enthaltenen Dateien löschen? |
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 24.07.2011 ▲ |
| |
| | « Dieser Beitrag wurde als Lösung gekennzeichnet. » | | - Seite 3 - |
| Dieter Zornow | Warum nimmst du nicht einfach die API zum löschen. Hier ist ein flexibler Code für Löschen, Kopieren Umbenennen und Bewegen. Je nach Parameter kannst du in den Papierkorb oder auch nicht löschen, ganz wie du willst. Das erspart doch den ganzen Hickhack und arbeitet zuverlässig. Im Beispiel wird ohne Nachfrage ein Verzeichnis mit Unterverzeichnissen nicht in den Papierkorb gelöscht
' Parameter 1: Auszuführende Operation=COPY, DELETE, RENAME, MOVE
' Parameter 2: Quelldatei(en)
' Parameter 3: Zielldatei(en)
' Parameter 4: 0 = Benutzer fragen, 1= ohne Nachfrage löschen
' Parameter 5: 0 = In Papierkorb verschieben, 1= "endgültig" löschen
' Parameter 6: 0 = Abbrechen bei vorhandener Datei, 1 = Kopie der Datei anlegen
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#
EndProc
cls
SHFileoperation("Delete","c:\\Temp\\Test\\","",1,1,0)
print "fertig"
Waitinput
end
|
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 26.07.2011 ▲ |
| | |
| | | | | - Seite 2 - |
| Julian Schmidt | Jörg Sellmeyer (25.07.11)
Außerdem nützt Dir das hier: nichts, um evtl. einen Fehler abzufangen, da Dein Programm so oder so weitermacht. Wenn, dann eine vernünftige iF-Abfrage in der Du auch eine Alternative programmierst. Also eine Messagebox "Falscher Pfad" oder sowas.
cls
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))
Proc delete_folder_completely
Parameters Pfad$
declare fehler%,z%,h&
var addfiles.dll&=ImportDLL("addfiles.dll","")
while 1
if DirExists(Pfad$)
h&=Create("List", 0)
Chdir Pfad$
if @GetDir$("@")=Pfad$
AddFiles("*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
if Left$(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$
if FileExists(GetString$(h&,&loop-1))
Erase GetString$(h&,&loop-1)
if FileExists(GetString$(h&,&loop-1))
Messagebox("Die Datei '"+GetString$(h&,&loop-1)+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
Endif
Endwhile
clearlist h&
Chdir Pfad$
if @GetDir$("@")=Pfad$
AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
if Left$(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$
if DirExists(GetString$(h&,&loop-1))
RmDir GetString$(h&,&loop-1)
if DirExists(GetString$(h&,&loop-1))
Messagebox("Das Verzeichnis '"+GetString$(h&,&loop-1)+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
Endif
Endwhile
if @GetDir$("@")=Pfad$
if DirExists(Pfad$)
RmDir Pfad$
if DirExists(Pfad$)
Messagebox("Das Verzeichnis '"+Pfad$+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' ist nicht vorhanden","ERROR",16)
Endif
if fehler%=0
break
else
z%=Messagebox("Das Löschen des Ordnes '"+Pfad$+"' war nicht erfolgreich! Wollen Sie es Wiederholen?","INFO",5+64+256+4096)
if z%=4
fehler%=0
else
break
Endif
Endif
Endwhile
destroywindow(h&)
FreeDLL addfiles.dll&
EndProc
Jörg Sellmeyer (25.07.11)
Du springst mit ChDir in den Ordner rein. Es kann gut sein, daß dieser dadurch blockiert wird und Du erst löschen kannst, wenn Du wieder aus dem Ordner rausgehst: ChDir ".."
Wie könnte ich sowas in den Code einbeziehen?
iF (25.07.11)
Warum eine Datei/ Ordner sich nicht entfernen lässt... irgend ein Prozess wird halt noch am oder im Verzeichnis rumwuseln und ein Handle halten - vlt. der Explorer der an seiner versteckten thumbs.db klebt oder ein AV-Programm oder ein Indizierungsdienst
Das habe ich bereits vermutet! Ich habe deswegen versucht den Ordner freizugeben, den Computer neugestartet, Explorer.exe beendet. Danach ging es, wie zuvor ebenfalls nicht! Anschließend habe ich über Unlocker überprüft ob ein Prozess den Ordner verwendet. Der Sagte mir das er nicht in Verwendung ist! Nach einem weiteren Test des Löschens ging es wieder nicht. Liegt etwa am Quellcode, bzw. an RmDir? Oder weil XProfan selbst diesen Ordner blockiert.
iF (25.07.11)
oder oder oder... nutze testweise die addFiles.DLL wie im Beispiel auch mal per external statt per importdll um auch auszuschließen ob ich da vergessen habe ein Handle zu schließen.
Muss ich die DLL davor noch iwie einbinden [UseDLL oder so?]? |
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 25.07.2011 ▲ |
| |
| | | Nein, einfach nur External. |
| | | | |
| | Julian Schmidt | Über den Aufruf über External kommt wiederum eine Fehlermeldung. Liegt es vlt daran das ich den kompletten Pfad zur DLL angeben muss?
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))
Proc delete_folder_completely
Parameters Pfad$
declare fehler%,z%,h&
'var addfiles.dll&=ImportDLL("addfiles.dll","")
while 1
if DirExists(Pfad$)
h&=Create("List", 0)
Chdir Pfad$
if @GetDir$("@")=Pfad$
'AddFiles("*.*",h&,1)
external("addfiles.dll","AddFiles","*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
if Left$(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$
if FileExists(GetString$(h&,&loop-1))
Erase GetString$(h&,&loop-1)
if FileExists(GetString$(h&,&loop-1))
Messagebox("Die Datei '"+GetString$(h&,&loop-1)+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
Endif
Endwhile
clearlist h&
Chdir Pfad$
if @GetDir$("@")=Pfad$
'AddDirs("*.*",h&,1)
external("addfiles.dll","AddDirs","*.*",h&,1)
whileloop GetCount(h&),1,-1
if Left$(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$
if DirExists(GetString$(h&,&loop-1))
RmDir GetString$(h&,&loop-1)
if DirExists(GetString$(h&,&loop-1))
Messagebox("Das Verzeichnis '"+GetString$(h&,&loop-1)+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
Endif
Endwhile
if @GetDir$("@")=Pfad$
if DirExists(Pfad$)
RmDir Pfad$
if DirExists(Pfad$)
Messagebox("Das Verzeichnis '"+Pfad$+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' ist nicht vorhanden","ERROR",16)
Endif
if fehler%=0
break
else
z%=Messagebox("Das Löschen des Ordnes '"+Pfad$+"' war nicht erfolgreich! Wollen Sie es Wiederholen?","INFO",5+64+256+4096)
if z%=4
fehler%=0
else
break
Endif
Endif
Endwhile
destroywindow(h&)
'FreeDLL addfiles.dll&
EndProc
|
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 25.07.2011 ▲ |
| |
| | Jörg Sellmeyer |
den kompletten Pfad zur DLL angeben muss?
Hast Du es schon ausprobiert? |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 25.07.2011 ▲ |
| |
| | | | - Seite 3 - |
| | Julian Schmidt | Jörg Sellmeyer (25.07.11)
Nein geht leider nicht.
Def DateiName(1) SubStr$(@$(1),-1,"\\")
Def DateiPfad(1) Translate$(@$(1),("\\" + DateiName(@$(1))),"")
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))
Proc delete_folder_completely
Parameters Pfad$
declare fehler%,z%,h&
'var addfiles.dll&=ImportDLL("addfiles.dll","")
while 1
if DirExists(Pfad$)
h&=Create("List", 0)
Chdir Pfad$
if @GetDir$("@")=Pfad$
'AddFiles("*.*",h&,1)
Messagebox(DateiPfad(Par$(1)) +"\\addfiles.dll","",0)
external(DateiPfad(Par$(1)) +"\\addfiles.dll","AddFiles","*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
if Left$(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$
if FileExists(GetString$(h&,&loop-1))
Erase GetString$(h&,&loop-1)
if FileExists(GetString$(h&,&loop-1))
Messagebox("Die Datei '"+GetString$(h&,&loop-1)+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
Endif
Endwhile
clearlist h&
Chdir Pfad$
if @GetDir$("@")=Pfad$
'AddDirs("*.*",h&,1)
external("addfiles.dll","AddDirs","*.*",h&,1)
whileloop GetCount(h&),1,-1
if Left$(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$
if DirExists(GetString$(h&,&loop-1))
RmDir GetString$(h&,&loop-1)
if DirExists(GetString$(h&,&loop-1))
Messagebox("Das Verzeichnis '"+GetString$(h&,&loop-1)+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
Endif
Endwhile
if @GetDir$("@")=Pfad$
if DirExists(Pfad$)
RmDir Pfad$
if DirExists(Pfad$)
Messagebox("Das Verzeichnis '"+Pfad$+"' konnte nicht gelöscht werden!","ERROR",16)
fehler%=fehler%+1
Endif
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' konnte nicht geöffnet werden!","ERROR",16)
Endif
else
Messagebox("Der Pfad '"+Pfad$+"' ist nicht vorhanden","ERROR",16)
Endif
if fehler%=0
break
else
z%=Messagebox("Das Löschen des Ordnes '"+Pfad$+"' war nicht erfolgreich! Wollen Sie es Wiederholen?","INFO",5+64+256+4096)
if z%=4
fehler%=0
else
break
Endif
Endif
Endwhile
destroywindow(h&)
'FreeDLL addfiles.dll&
EndProc
|
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 25.07.2011 ▲ |
| |
| | Jörg Sellmeyer | Warum machst Du es Dir (und uns) so schwer? Du willst doch nur rauskriegen, ob Du die Dll richtig lädtst. Also einfach mal einen minimalsten Code, in dem Du die Dll lädst und eine Aktion ausführst: Warum sollen wir uns die Hilfe zur Dll durchlesen, wenn Du es nicht machst? Dort sollten die Parameter stehen, die die einzelnen Funktionen erwarten und in der Profanhilfe steht, wie der Aufruf mit External funktioniert. Du solltest keine Funktionen an die Dllaufrufe übergeben, sondern Variablen. Also nicht:
Statt dessen so:
Und ehrlich gesagt: Deine verschachtelte If-Struktur verstehe ich gar nicht
Du mußt doch nur überprüfen, ob das Verzeichnis, das Deiner Löschprozedur mit Parameters übergeben wird, vorhanden ist. Also etwas so:
Mit dem Pfad zur Dll: Es hängt davon ab, wo sie sich befindet. Wenn sie im Windowsordner oder einem anderen Ordner im Systempfad ist, wird sie direkt gefunden. Wenn sie im Programmordner Deines Programmes liegt, wird sie auch gefunden. Wichtig hierbei: Solange Du entwickelst und Prf-Dateien startest, ist evtl. der Profanordner der Programmordner! Wenn sie irgendwoanders liegt, muß der Pfad angegeben werden. Mach einen Drei- bis Fünfzeiler und ich teste gerne. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 26.07.2011 ▲ |
| |
| | | Jörg Sellmeyer (26.07.11)
Ich glaube Du meintest External statt DateiPfad:
@Julian: Vermutlich wäre es "ordentlicher" wenn Du die DLL(s) die Du benötigst bei Nichtvorhandensein nach appdata/roflmao ablegst und dort auch lädst. |
| | | | |
| | Dieter Zornow | Warum nimmst du nicht einfach die API zum löschen. Hier ist ein flexibler Code für Löschen, Kopieren Umbenennen und Bewegen. Je nach Parameter kannst du in den Papierkorb oder auch nicht löschen, ganz wie du willst. Das erspart doch den ganzen Hickhack und arbeitet zuverlässig. Im Beispiel wird ohne Nachfrage ein Verzeichnis mit Unterverzeichnissen nicht in den Papierkorb gelöscht
' Parameter 1: Auszuführende Operation=COPY, DELETE, RENAME, MOVE
' Parameter 2: Quelldatei(en)
' Parameter 3: Zielldatei(en)
' Parameter 4: 0 = Benutzer fragen, 1= ohne Nachfrage löschen
' Parameter 5: 0 = In Papierkorb verschieben, 1= "endgültig" löschen
' Parameter 6: 0 = Abbrechen bei vorhandener Datei, 1 = Kopie der Datei anlegen
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#
EndProc
cls
SHFileoperation("Delete","c:\\Temp\\Test\\","",1,1,0)
print "fertig"
Waitinput
end
|
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 26.07.2011 ▲ |
| |
| | Julian Schmidt | Dieter Zornow (26.07.11)
Warum nimmst du nicht einfach die API zum löschen. Hier ist ein flexibler Code für Löschen, Kopieren Umbenennen und Bewegen. Je nach Parameter kannst du in den Papierkorb oder auch nicht löschen, ganz wie du willst. Das erspart doch den ganzen Hickhack und arbeitet zuverlässig. Im Beispiel wird ohne Nachfrage ein Verzeichnis mit Unterverzeichnissen nicht in den Papierkorb gelöscht ' Parameter 1: Auszuführende Operation=COPY, DELETE, RENAME, MOVE
' Parameter 2: Quelldatei(en)
' Parameter 3: Zielldatei(en)
' Parameter 4: 0 = Benutzer fragen, 1= ohne Nachfrage löschen
' Parameter 5: 0 = In Papierkorb verschieben, 1= "endgültig" löschen
' Parameter 6: 0 = Abbrechen bei vorhandener Datei, 1 = Kopie der Datei anlegen
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#
EndProc
cls
SHFileoperation("Delete","c:\\Temp\\Test\\","",1,1,0)
print "fertig"
Waitinput
end
Genau so etwas habe ich gesucht! |
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 26.07.2011 ▲ |
| |
| | E.T. | | | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 26.07.2011 ▲ |
| |
| | Julian Schmidt | Ich will die Dateien ja auch nicht in Papierkorb verschieben. ^^ Über das Forum habe ich nur "Verzeichnis" gesucht. Und über Strg+F anschließend nach "löschen", "loeschen" gesucht, wo nicht das was ich suchte gefunden wurde... |
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 26.07.2011 ▲ |
| |
| | | Jupp, war nicht einfach zu finden -
darum mache ich mir immer die Mühe solche Quelltexte mit relevanten Suchbegriffen zu versehen um einzusortieren. |
| | | | |
|
AntwortenThemenoptionen | 30.940 Betrachtungen |
ThemeninformationenDieses Thema hat 8 Teilnehmer: |