Fehlermeldung unterdrücken

  • Hallo zusammen

    Ich habe ein Script gemacht, wo der Benutzer aufgefordert wird JA oder NEIN zu wählen. Wenn er NEIN wählt passiert nichts und das Fenster schliesst sich. Wenn er JA wählt wird eine Datei kopiert mit dem Windows Explorer Kopierfenster. Während dem Kopiervorgang kann der Benutzer auf Abbrechen klicken und das Fenster verschwindet dann.

    Das Problem ist, wenn er das macht kommt nacher eine Fehlermeldung von AUTOIT

    "Error: the requested action with this object has failed"

    Kann ich diese Fehlermeldung irgendwie unterdrücken ???

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

    ;-------------------------------------------------------------------------------------
    ; Kopiert die Datei c:\Postfach\Benutzer.pst nach \\ntsrv05\pst_archiv\A_Benutzer\
    ; wenn der Benutzer auf die Schaltfläche JA klickt

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

    #include <GUIConstants.au3>

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

    GUICreate("Radio Box Demo", 260,140)

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

    GUICtrlCreateLabel ("Soll die Datei kopiert werden ?", 20, 20, 250) ; first cell 50 width

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

    ; Create the controls
    $button_1 = GUICtrlCreateButton ("Ja", 30, 50, 80, 40)
    $button_2 = GUICtrlCreateButton ("Nein", 140, 50, 80, 40)

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

    ; Show the GUI
    GUISetState ()

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

    ; Auswahl ausführen.........
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $button_1
    GUISetState (@SW_HIDE)
    ;MsgBox(0, "Default button clicked", "Ja" )
    $username = EnvGet("username")

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

    copy("c:\" & $username & ".doc","\\Server\freigabe\a_" & $username & "\")

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

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

    Exit


    Case $msg = $button_2
    Exit;MsgBox(0, "Default button clicked", "Nein" )

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

    EndSelect
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Hallo,
    bei mir kommt diese Fehlermeldung nicht (Benutze V3.2.0.1 & Beta V3.2.1.5)
    Warum kopierst du denn die Datei nicht mit der Funktion FileCopy() ???
    ProgressBar ist zwar cool, aber will der User wirklich den ganzen CopyJob mitverfolgen? (Vielleicht um jeweils bei 99% Abbrechen zu drücken :rofl:)

    eddy_erpel

  • ich benutze v3.2.0.1 und bei mir kommt die Meldung, vielleicht liegts am Windows 2000 das ich einsetze.

    ich denke schon das der User das will wenn die Datei so 300-500 MB gross ist,
    so weiss er wenigstens wie lange es etwa noch dauert........ ;)

    Oder gibt es ein für Anfänger geeignetes AutoIT Copy Script mit Progressbar ???

    Einmal editiert, zuletzt von _Dani_ (4. Oktober 2006 um 14:52)

    • Offizieller Beitrag

    HI,

    versuch doch mal so, evtl. hilft das ja:

    [autoit]

    ;-------------------------------------------------------------------------------------
    ; Kopiert die Datei c:\Postfach\Benutzer.pst nach \\ntsrv05\pst_archiv\A_Benutzer\
    ; wenn der Benutzer auf die Schaltfläche JA klickt

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

    #include <GUIConstants.au3>

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

    $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") ; Install a custom error handler
    GUICreate("Radio Box Demo", 260, 140)
    GUICtrlCreateLabel("Soll die Datei kopiert werden ?", 20, 20, 250) ; first cell 50 width

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

    ; Create the controls
    $button_1 = GUICtrlCreateButton("Ja", 30, 50, 80, 40)
    $button_2 = GUICtrlCreateButton("Nein", 140, 50, 80, 40)

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

    ; Show the GUI
    GUISetState()

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

    ; Auswahl ausführen.........
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $button_1
    GUISetState(@SW_HIDE)
    ;MsgBox(0, "Default button clicked", "Ja" )
    ;$username = EnvGet("username")
    copy("c:\" & @UserName & ".doc", "\\Server\freigabe\a_" & @UserName & "\")
    Case $msg = $button_2
    Exit;MsgBox(0, "Default button clicked", "Nein" )

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

    EndSelect
    WEnd

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

    Func copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then MsgBox(0, "", "the previous line got an error.")
    EndFunc ;==>copy

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

    ; This is my custom error handler
    Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    MsgBox(0, "", "We intercepted a COM Error !" & @CRLF & _
    "Number is: " & $HexNumber & @CRLF & _
    "Windescription is: " & $oMyError.windescription)
    SetError(1) ; something to check for when this function returns
    EndFunc ;==>MyErrFunc

    [/autoit]

    So long,

    Mega

    P.S.: Ich würde es zwar ganz anders machen, aber ... ;)

  • es funktioniert :) vielen Dank !!!

    darf ich fragen wie du es machen würdest ?

    Einmal editiert, zuletzt von _Dani_ (4. Oktober 2006 um 15:20)