Français
Source/ Codesnippets

Shfileoperation

 
- 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éparation
Def @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
 
07.03.2005  
 



 
- page 2 -


il coutume une Code, ne...aucune Bild
 
22.06.2008  
 




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
 
23.06.2008  
 



j'écrivais doch dessus déjà
iF
Vom Code dessus:
KompilierenMarqueSéparation
Word opstruct#,16=FOF_Flag% | ~FOF_NOERRORUI
>


simple Word opstruct#,16=FOF_Flag% | ~FOF_NOERRORUI ici weitere anhängen | blub | brab |solali

FOF_Flag% peux Du unangefasst laisser.
 
23.06.2008  
 




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.
 
23.06.2008  
 




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
 
23.06.2008  
 




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éparation
Def 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éparation
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  
 




Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

6.859 Views

Untitledvor 0 min.
Andre Rohland31.05.2019
supernova04.12.2013
Christian Hahn05.07.2013

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie