| |
|
|
| Descripción:
Mit el API SHFileOperation puede ser todo Ordner oder einzelne Archivos con Forschrittsanzeige kopieren, löschen (auch Papierkorb), mover oder umbenenen.
Deklaration:
Def @SHFileOperation(1) !SHELL32,SHFileOperationA
Parámetro:
1.Parámetro: Structur oder 30 Byte große Bereichsvariable => -Byte 0-3 = Handle la ventana, en el el Fortschrittsdialog erscheinen se. -Byte 4-7 = Flag para el durchzuführende Aktion => $1 = verschieben; $2=kopieren; $2=löschen; $4=umbenenen -Byte 8-11 = Adresse uno Bereichvariablen, el el a modifizierende(n) Expediente(en) oder Ordner enthält. Diese Bereichvariable muß como Abschluß zwei Nullbytes enthalten. Einzelne Archivos oder Ordner voluntad con un Nullbyte getrennt. -Byte 12-15 = Adresse uno Bereichvariablen, el el Ziel-datei(en) oder -ordner enthält. Diese Bereichvariable muß como Abschluß zwei Nullbytes enthalten. Einzelne Archivos oder Ordner voluntad con un Nullbyte getrennt. -Byte 16-17 = Flag para el weitere Optionen el durchzuführenden Aktion => $40 = Wenn posible voluntad Undoinformationen gespeichert. $80 = Wenn Wildcards (*.*) verwendet voluntad, sólo Archivos berücksichtigen. $1 = Lo son mehrere Zielordner. $10 = Keine Einzelbestätigung. $200 = Das Erstellen uno Ordners muß no bestätigt voluntad. $2000 = Verbundene Files no como Gruppe mover. $800 = Lo voluntad no Security Atributos kopiert (NT/2000/XP) $400 = Lo se kein Userinterface en una Fehler ausgegeben. $1000 = Lo voluntad no Unterverzeichnisse berücksichtigt (sólo aktuelles Directorio). $8 = Wenn Filename ya disponible es, otro Namen geben! $4 = Lo se kein Fortschrittsdialog adecuado. $100 = Nur Fortschrittsdialog, no Dateinamen Mostrar! $20 = Lo se una Mapping Objeto con el alten y neuen Dateinamen producido, si $8 spezifiziert wurde y Files umbenannt fueron. -Byte 18-21 = Rückgabeflag. Wenn el User una Aktion abgebrochen ha, es hier 1. -Byte 22-25 = Hier es como Rückgabe el Handle des Mapping Objektes, si $20 spezifiziert wurde. -Byte 26-29 = El Adresse uno Textstrings como Überschrift para el Fortschrittsdialog, si $100 spezifiziert wurde.
Rückgabewert:
0 en Erfolg, 1 en Fehler.
Beispiele:
KompilierenMarcaSeparaciónDef @SHFileOperation(1) !SHELL32,SHFileOperationA
Proc Fileaction
Parameters Action$,File$,File2$,noconfirm%,norecycle%
Parameter 1: Auszuführende Aktion=COPY, DELETE, RENAME, MOVE
Parameter 2: Quelldatei
Parameter 3: Zielldatei
Parameter 4: 0 = User erst fragen, 1= ohne Nachfrage löschen
Parameter 5: 0 = In Papierkorb verschieben, 1= endgültig löschen
Declare FOF_Flag%,Action&,DO%,Fehler&
Declare opstruct#,file#,file2#
LET DO%=0
IF @upper$(Action$)=RENAME
Let Action&=4
elseIF @upper$(Action$)=COPY
Let Action&=2
elseIF @upper$(Action$)=MOVE
Let Action&=1
elseIF @upper$(Action$)=DELETE
Let Action&=3
else
@messagebox(Diese Funktion ist nicht bekannt!,Aktion wird nicht ausgeführt!,64)
LEt DO%=1
endif
IF DO%=0
Case noconfirm% : Let noconfirm%=16
CaseNot norecycle% : Let norecycle%=64
Let FOF_Flag% = @or(noconfirm%,norecycle%)
Dim opstruct#,30
Dim file#,Add(Len(file$),2)
Dim file2#,Add(Len(file2$),2)
String file#,0=@Add$(file$,@Chr$(0))
String file2#,0=@Add$(file2$,@Chr$(0))
Long opstruct#,0=%hwnd Handle des aufrufenden Fensters
Long opstruct#,4=Action&
Long opstruct#,8=file# pfrom : hier der zu löschende Ordner
Long opstruct#,12=file2# pto (muß 0 oder eine Bereichvar. mit Zieldateinamen z.B. bei Umbenennung sein
Word opstruct#,16=FOF_Flag%
Long opstruct#,18=0 Hier steht nach dem Aufruf 1, wenn User abgebrochen hat
Long opstruct#,22=0 Unbedingt immer auf Null setzen!
Long opstruct#,26=0 Zeiger(Bereich) auf Überschrift des Fortschrittsdialogs
LET FEHLER&=@ShFileOperation(opstruct#)
IF @equ(@long(opstruct#,18),1)
@MessageBox(Die Dateioperation wurde abgebrochen!,Operation abgebrochen!,64)
ELSEIF @neq(Fehler&,0)
@MessageBox(Es ist ein Fehler aufgetreten,ShFileOperation +@str$(Fehler&),16)
EndIf
Dispose file#
Dispose file2#
Dispose opstruct#
endif
EndProc
REM Beispiel
Fileaction COPY,C:WINDOWS,E:TEMP,0,0
Fileaction DELETE,E:../../funktionsreferenzen/XProfan/temp/'>TEMP,,1,1
|
|
|
| |
|
|
|
J. Strahl | Hallölle,
schöne Función el Yo benutze el Userprofile en una Stick a kopieren.
Leider hay en el Ordner %userprofile%Lokale EinstellungenAnwendungsdatenMicrosoftWindows el Expediente UsrClass.dat welche en Benutzung es. Beimm kopieren bekomme Yo el Fehlermeldung Expediente kann no kopieren voluntad como ellos en Benutzung es
Gibt lo una Möglichkeit solche Archivos a überspringen o el Fehlermeldung a umgehen ? - Nach el Fehlermeldung bricht el Programa de y el resto no es mehr kopiert.
|
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 22.06.2008 ▲ |
|
|
|
|
| Schau veces, hier posición Flags [...] , z.B. FOF_NOCONFIRMATION oder FOF_NOERRORUI. |
|
|
| |
|
|
|
Michael Dell | ¡Hola,
Usted könntest el Ordner Zippen el geschützten Archivos blieben entonces ausen antes.
Oder Usted startest el PC con nem zweiten Betriebsystem oder ner Live-CD/DVD y kopierst el Ordner komplett.
Mit uno DOS-Startdiskette kannst Usted el auch si lfn4dos y eff. ntsf4dos verwendest!
El letzte Möglichkeit wäre el SFP (SystemFileProtection) abzuschalten, su es allerdings dringend abzuraten, porque el hieße direkte manipulation des Systems! |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 22.06.2008 ▲ |
|
|
|
|
| Yo glaube SystemFileProtection abschalten sería ihm hier no viel nutzen.
Wenn lo ihm en el Auslesen el Expediente va hilft vlt. una FileMode en sólo Lesen a conjunto.
Übrigens Yo el Expediente UsrClass.Dat no. (xphomesp3) |
|
|
| |
|
|
|
J. Strahl | sí, suppa - el Sache con el Flags gefällt me schonmal. Wichtig es el weiterkopiert se. Aunque Yo ahora keinerlei Plan wo y cómo Yo ahora irgendwo una Flag poner.
` FOF_NOERRORUI -- Do not display a dialog to the user if a error occurs.`
Soweit klar aber el source entsprechend abändern. No Plan.. Alguien de euch ? |
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 22.06.2008 ▲ |
|
|
|
|
| |
|
| |
|
|
|
J. Strahl | oha, sorry - blutigen Principiante.......
Case noconfirm% : Let noconfirm%=16 Casenote norecycle% : Let norecycle%=64 Let FOF_Flag% = @or(noconfirm%,norecycle%)
Yo leite veces su de el el FOF_Flag% todavía qué einschieben muß. Aber qué ?
|
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 22.06.2008 ▲ |
|
|
|
|
| |
|
| |
|
|
|
| Yo el oben stehenden Code en media NC-Clone ya antes zwei Jahren instalado. El Parámetro puede en para Programa gehörende INI-Expediente verstellt y ser el Ganze funktioniert perfekt |
|
|
| |
|
|
|
J. Strahl |
ne ne ne, Yo weiß no Yo ihm geben se. Yo habe ahora alles gehabt, direkter Abbruch sin Meldung. Kopieren sin Anzeige qué kopiert se. Aber el el Fehler simplemente übersprungen se, klappt no. Yo weiß como no más, gehe aber su de el Yo el eh no schnalle.
Yo habe en el Línea :
Let FOF_Flag% = @or(noconfirm%,norecycle%)
simplemente veces una + 32 y verchiedene otro Möglichkeiten ausprobiert. Yo komme pero no el gewünschte Ergebniß. Yo weiß simplemente no y habe lo auch no encontrar puede welcher Valor zusätzlich como rein muß.
@ Horst : Yo habe veces después de el NC-Clone gesucht si Yo como algo encontrar kann - desafortunadamente podría Yo des auch no encontrar. höhö
|
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 22.06.2008 ▲ |
|
|
|
|
|
Yo habe veces después de el NC-Clone gesucht si Yo como algo encontrar kann - desafortunadamente podría Yo des auch no encontrar. höhö
Wo willst Usted porque como suchen ? - Dann müsstest Usted ya Zugang a meiner Festplatte haben - außer Jörg hätte todavía el código vom Beta-Test y el glaube Yo no. So como en el Bild sieht él de y ha el código intregiert |
|
|
| |
|
|