| |
|
|
- page 1 - |
|
| Beschreibung:
avec qui API SHFileOperation peux on ganze Dossier ou bien einzelne Fichiers avec Forschrittsanzeige kopieren, effacer (aussi corbeille à papier), Déplacer ou bien umbenenen.
Deklaration:
Def @SHFileOperation(1) !SHELL32,SHFileOperationA
paramètre:
1.paramètre: Structur ou bien 30 Byte grand Bereichsvariable => -Byte 0-3 = Handle des Fensters, sur dem qui Fortschrittsdialog erscheinen soll. -Byte 4-7 = Flag pour qui durchzuführende Aktion => $1 = verschieben; $2=kopieren; $2=löschen; $4=umbenenen -Byte 8-11 = Adresse einer Bereichvariablen, qui qui trop modifizierende(n) Dossier(en) ou bien Dossier contient. cet Bereichvariable doit comme Abschluß deux Nullbytes enthalten. Einzelne Fichiers ou bien Dossier volonté avec einem Nullbyte getrennt. -Byte 12-15 = Adresse einer Bereichvariablen, qui qui but-fichier(en) ou bien -ordner contient. cet Bereichvariable doit comme Abschluß deux Nullbytes enthalten. Einzelne Fichiers ou bien Dossier volonté avec einem Nullbyte getrennt. -Byte 16-17 = Flag pour qui weitere Optionen qui durchzuführenden Aktion => $40 = si possible volonté Undoinformationen gespeichert. $80 = si Wildcards (*.*) verwendet volonté, seulement Fichiers berücksichtigen. $1 = il y a plusieurs Zielordner. $10 = aucun Einzelbestätigung. $200 = cela Erstellen eines Ordners doit pas bestätigt volonté. $2000 = Verbundene Files pas comme Gruppe Déplacer. $800 = Es volonté aucun Security Attribute kopiert (NT/2000/XP) $400 = Es wird ne...aucune Userinterface chez einem faute ausgegeben. $1000 = Es volonté aucun Unterverzeichnisse berücksichtigt (seulement aktuelles Verzeichnis). $8 = si Filename déjà vorhanden ist, anderen Namen donner! $4 = Es wird ne...aucune Fortschrittsdialog angezeigt. $100 = seulement Fortschrittsdialog, keinen Dateinamen Montrer! $20 = Es wird un Mapping objet avec den alten et neuen Dateinamen erzeugt, si $8 spezifiziert wurde et Files umbenannt wurden. -Byte 18-21 = Rückgabeflag. si qui User une Aktion abgebrochen hat, steht ici 1. -Byte 22-25 = ici steht comme Rückgabe cela Handle des Mapping Objektes, si $20 spezifiziert wurde. -Byte 26-29 = qui Adresse eines Textstrings comme Überschrift pour den Fortschrittsdialog, si $100 spezifiziert wurde.
Rückgabewert:
0 chez Erfolg, 1 chez faute.
Beispiele:
KompilierenMarqueSéparationDef @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
|
|
|
| |
|
|
| |
|
- page 2 - |
|
|
| il coutume une Code, ne...aucune Bild |
|
|
| |
|
|
|
Dieter Zornow | je denke cet Dossier peux pas kopiert volonté. je hatte es avec verschiedenen bekannten Commandern versucht, aucun konnte vous kopieren et Unlocker gelang es aussi pas vous freizugeben. je denke il sollte qui Fichiers einzeln kopieren et si un faute auftritt qui prochain kopieren. |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 23.06.2008 ▲ |
|
|
|
|
J. Strahl | [
il coutume une Code, ne...aucune Bild
GENAU
qui Dossier peux et doit pas kopiert volonté. Allerdings bricht cela kopieren à qui Stelle ab et kopiert den reste dans dem Dossier pas plus plus. là im Laufe qui Zeit là toujours plus Fichiers abgelegt volonté peux je aussi pas simple Unterordner kopieren. c'est pourquoi serait je volontiers qui Funktion dire allô, aucun Fehlermeldung si du quoi pas kopieren peux, mais kopiere plus
et nu sais je pas comment je dem FOF_Flag% cela einverleiben peux si es überhaupt allez. sais cela einer ? |
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 23.06.2008 ▲ |
|
|
|
|
| ...nie gemacht maintenant la fois so gemacht - peut-être hilft Dir qui Anfang - je suis ne...aucune API-Progi - mais so wird qui Dossier übersprungen beim Kopieren: KompilierenMarqueSéparation |
|
|
| |
|
|
|
| j'écrivais doch dessus déjà iF
simple Word opstruct#,16=FOF_Flag% | ~FOF_NOERRORUI ici weitere anhängen | blub | brab |solali
FOF_Flag% peux Du unangefasst laisser. |
|
|
| |
|
|
|
J. Strahl | définition im En-tête fehlt
si je cela so eingebe:
Word opstruct#,16=FOF_Flag% | ~FOF_NOERRORUI
äh, comment dessus beschrieben blutiger Débutant. je hoffe je nerf euch pas trop stark.
je vermute la fois IF cela du Sachen vorraussetzt qui je ( encore ) pas kenne muhaha -
Sollte ~FOF_NOERRORUI pas une Zahlenwert avons ? |
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 23.06.2008 ▲ |
|
|
|
|
| Pour quelque chose comme J'ai eu Konstantinopel programmiert: [...] qui Helferrubrik [...] birgt quelques Schätze! Incidemment, XPSE hat cet Konstanten intus - là braucht on aucun solchen En-tête plus et ne...aucune ~-marque. |
|
|
| |
|
|
|
J. Strahl | OK OK - ensuite suis je oui doch pas so maladroit.
Den Wert den il me faut is 1024 qui zusätzlich le Werten noconfirm% et norecycle% zuaddiert volonté.
sprich :
Word opstruct#,16=FOF_Flag% + 1024
Richtig ?
Des ham wa déjà getestet. malheureusement, malheureusement doit je dire cela ensuite qui Kopiervorgang abgebrochen wird. et qui soll doit continuer.
encore weitere idées ? |
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 23.06.2008 ▲ |
|
|
|
|
| Besser pas addieren mais avec binärem or verknüpfen, alors word ops....,16=fof_flag% | 1024 | blub | japp |
|
|
| |
|
|
|
J. Strahl | seulement ma un dicken merci joli à alle qui sich ici qui Finger wund geschrieben avons ( IF ) - suis eh bien trop folgendem Ergebniß gekommen.
Word opstruct#,16=FOF_Flag% | 1024
ersetzt et malheureusement seulement un Programmabbruch. Gibt es vieleicht encore autre Opportunités ? sans qui @SHFileOperation(1) !SHELL32,SHFileOperationA Funktion trop nutzen ?
|
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 23.06.2008 ▲ |
|
|
|
|
Dieter Zornow | Versuchs la fois so, qui Code ist getestet. Es wird alles kopiert quoi allez sans Programmabbruch KompilierenMarqueSéparationDef GetFullPathName(4) ! Kernel32,GetFullPathNameA
Def @SHFileOperation(1) !SHELL32,SHFileOperationA
Proc GetFullName
Parameters name$
Declare buf1#,buf2#
Dim buf1#,560 +1
Dim buf2#,560 +1
GetFullPathName(Addr(name$),511,buf1#,buf2#)
Name$=String$(buf1#,0)
Dispose buf1#
Dispose buf2#
Return name$
EndProc
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% : noconfirm%=16
CaseNot norecycle% : norecycle%=64
Let FOF_Flag% = (noconfirm% | norecycle% | 1024)
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=%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 long(opstruct#,18) = 1
Print long(opstruct#,18)
ELSEIF (Fehler& <> 0)
Print Fehler
EndIf
Dispose file#
Dispose file2#
Dispose opstruct#
endif
EndProc
REM Beispiel
cls
Declare name$
chdir c:Dokumente und Einstellungen\%userprofile%Lokale EinstellungenAnwendungsdatenMicrosoftWindows
clearlist
addfiles *.*
whileloop 0, %getcount
name$ = Getfullname(ListBoxItem$(&loop))
Fileaction COPY,name$+chr$(0),C:TEMP,0,0
endwhile
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 | 23.06.2008 ▲ |
|
|
|
|
J. Strahl | merci Dieter. cela funktioniert, allerdings seulement dedans des Ordners. là Je l' Oberordner mais kopieren veux, qui sich im Laufe qui Zeit oui toujours plus füllt et je auparavant pas sais quelle neuen Dossier hinzukommen, viens je là so aussi pas plus. mais net so grave, aufgrund qui vorhandenen Informationen et deiner habe je cela Problem dans den Griff bekommen. und dir oui principale um cet 2 Fichiers qui au cours de des Betriebes pas kopiert volonté peut et qui Funktion dadurch abbricht sans den reste plus trop kopieren. j'ai qui 2 Fichiers eh bien simple rausgeschnitten. KompilierenMarqueSéparationchdir @ADD$(Pfad$,Lokale EinstellungenAnwendungsdaten)
clearlist
addfiles *.*
whileloop 0, %getcount
if ListBoxItem$(&loop)=[.]
elseif ListBoxItem$(&loop)=[..]
elseif ListBoxItem$(&loop)=[Microsoft]
else
ifnot @Left$(ListBoxItem$(&loop),1)=[
else
dat$=@Left$(ListBoxItem$(&loop),LEN(ListBoxItem$(&loop))-1)
dat$=@Right$(dat$,LEN(dat$)-1)
Fileaction COPY,@ADD$(@ADD$(Pfad$,Lokale EinstellungenAnwendungsdaten),dat$),@ADD$(@ADD$($ProgDir,BackupLokale EinstellungenAnwendungsdaten),dat$),1,1
endif
endif
endwhile
chdir @ADD$(Pfad$,Lokale EinstellungenAnwendungsdatenMicrosoft)
clearlist
addfiles *.*
whileloop 0, %getcount
if ListBoxItem$(&loop)=[.]
elseif ListBoxItem$(&loop)=[..]
elseif ListBoxItem$(&loop)=[Windows]
else
ifnot @Left$(ListBoxItem$(&loop),1)=[
else
dat$=@Left$(ListBoxItem$(&loop),LEN(ListBoxItem$(&loop))-1)
dat$=@Right$(dat$,LEN(dat$)-1)
Fileaction COPY,@ADD$(@ADD$(Pfad$,Lokale EinstellungenAnwendungsdatenMicrosoft),dat$),@ADD$(@ADD$($ProgDir,BackupLokale EinstellungenAnwendungsdatenMicrosoft),dat$),1,1
endif
endif
endwhile
'./../../funktionsreferenzen/XProfan/end/'>end
Pour qui qui es intéressé. et many thanks pour eure Aider....... |
|
|
| Windows 7 Ultimate 64 * 12 GB Ram * XProfan 11.2a * PRFellow * PRFPAD | 24.06.2008 ▲ |
|
|
|