Frage zur _FileCopy Funktion

  • Moin,

    und zwar wüßte ich gerne wie ich bei dieser _FileCopy Funktion heraus bekomme wenn ein kopiervorgang abgebrochen wurde um dann eine passende MSGBox ausliefern zu können.

    Der Kopierbefehl:

    _FileCopy(@ScriptDir & "\Test\" & $file,"C:\")

    Die Funktion:

    [autoit]


    Func _FileCopy($fromFile,$tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 512
    $winShell = ObjCreate("shell.application")
    $winShell.namespace($tofile).CopyHere($fromFile,$FOF_RESPOND_YES)
    EndFunc

    [/autoit]

    Mfg

    Analyzer

  • Moin,

    auf die Idee bin ich noch garnicht gekommen, werde es dann mal so probieren, danke!

    Aber falls noch jemand ne Idee hat, dann mal immer raus damit!
    Werde den Thread noch als offen stehen lassen.

    Mfg

    Analyzer

  • Du kannst ja auch einfach das Plugin verwenden, welches schon bei Autoit3.2.2.1 mit bei ist und wenn das ganze mit ner variable gleichsetzt also so:

    [autoit]

    #include <file.au3>
    $copy = _filecopy($fromfile,$tofile)
    If $copy = 0 Then Msgbox(0,"Fehler","Der Vorgang wurde abgebrochen")

    [/autoit]


    wird bei Abruch oder einer Fehlfunktion die Variable zu 0

    mfg

    Dj Basslord

    2 Mal editiert, zuletzt von DjBasslord (26. Januar 2007 um 15:41)

  • Tach zusammen,

    ich sitze z.Z. vor dem gleichem Problem mit dem kopieren.

    [autoit]


    Func _FileCopy($fromFile, $tofile)

    GUISetState(@SW_DISABLE, $Form1)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES )
    EndFunc

    [/autoit]


    Das eine ist, dass

    Local $FOF_RESPOND_YES = 16

    nicht funktioniert, liegt wohl an den Wildcards. Mit einem Controlclick
    hab ich das auch nicht lösen können.


    Das schlimmere ist aber, dass ich auch noch keine Möglichkeit gefunden habe den evtl. Abbruch des kopierens abzufangen.

    Ich hab es noch mit

    $aDllRet = DllCall("kernel32.dll", "long", "GetLastError")
    versucht, ging natürlich auch in die Hose ... ;)

    Wenn ich nachträglich mit FileExists prüfen will muss ich ja genau wissen welche Dateien kopiert werden sollten. Leider hat Filelisttoarray wohl Probleme mit UNC Pfaden, zumindest klappt das bei mir nur bei lokalen Verzeichnissen/Dateien.

    Das Laufwerk vorher mappen möchte ich eigentlich auch nicht unbedingt, es soll halt nicht jeder auf den ersten Blick sehen wie die Sourcen liegen.

    Wenn also jemand eine Idee hat, immer her damit ... :)

    Grüße

    Machtin