_FileCopy unter Windows 2000

  • Hallo,

    ich benutze folgende Funktion (welche ich hier im Forum gefunden habe) um ein großes File mit Fortschrittsbalken zu kopieren:

    [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]

    Ich habe diese Funktion genommen damit ich das kopieren auch abbrechen kann.

    Unter Windows Vista (und ich vermute auch ganz stark das es unter XP so sein wird) kann ich das kopieren mit "Abbrechen" auch abbrechen und das AutoIt-Skript läuft weiter. Frage ich nun nach ob das File existiert, dann weiß ich ob das kopieren erfolgreich war.

    Unter Windows 2000 jedoch (und auch dort muss es laufen) bekomme ich jedoch eine AutoIt-Fehlermeldung:
    "AutoIt Error"
    Line -1:
    Error: The requested action with thos object has failed.

    Ich habe

    [autoit]

    Opt("RunErrorsFatal", 0)

    [/autoit]


    probiert aber ohne Erfolg.

    Jemand eine Idee (oder eine andere Funktion die ich benutzen könnte) ?
    Wichtig ist für mich ein Kopierfenster mit einer ungefähren Fortschrittsanzeige bei dem ich das kopieren aber auch abbrechen kann.

    Danke bereits im voraus.

    Gruß,
    Lefty

    Einmal editiert, zuletzt von Lefty (13. Februar 2008 um 08:26)

  • Hallo,

    erstmal vielen Dank für den Hinweis auf AdlibEnable, aber das bringt mir leider nichts.

    Die Fehlermeldung die da kommt ist ja vom AutoIt, und danach ist dann mein Skript weg. Ich möchte aber das beim Abbruch des Kopiervorgangs mein Skript weiter läuft (so wie es das auch beim Vista macht :) ).

    Zum Verständnis:
    Die Fehlermeldung erscheint (unter Windows 2000) wenn ich _FileCopy benutze und den Kopiervorgang abbreche.

    Ach du ##zensiert## ... Überschrift stimmt nicht ... muss _FileCopy heissen ;(

  • Moin, habe mal versucht den Fehler nachzustellen, leider ohne Erfolg. Ich habe das Script auf einem einfachen Windows 2000 System laufen lassen und es lief ohne Fehler.

    Mein Quelltext den ich benutzt habe, der Vollständigkeit halber:

    Spoiler anzeigen
    [autoit]


    _filecopy("c:\xxx.avi","c:\tmp\")
    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
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Getestet unter W2k SP4 ! Läuft einwandfrei, bis auf eine Fehlermeldung in Zeile 6 wenn man auf Abbrechen klickt.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Bitte schön, so geht es bei mir auch under W2k SP3 wenn ich den Vorgang abbreche, einfach ein Eventhandler hinzufügen:

    Spoiler anzeigen
    [autoit]


    $oMyError = ObjEvent("AutoIt.Error","_Fehlerbehandlung")

    [/autoit] [autoit][/autoit] [autoit]

    _filecopy("c:\xxx.avi","c:\tmp\")

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Func _Fehlerbehandlung()
    $oMyError.clear
    SetError(1)
    Endfunc

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)