Maus Zeiger in Sanduhr verwandeln

  • Hallo Ich hab ein Programm geschrieben das einen Ordner automatischmit WinZip packt. Da das Packen der Dateien etwas dauert soll sich in der zeit der MAuszeiger in die von Windows bekannte Sanduhr verwandeln

    [autoit]


    .
    .
    .
    MsgBox (0,"Zip-Datei erstellen","Zip- Datei wird ertsellt,"& @CRLF & "dies kann je nach größe der Datei etwas dauern")

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

    ; Hier soll sich die Maus in die Sanduhr verwandeln

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

    Zip ($pfad ,$zipdateiname)

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

    ;Hier soll sich die Maus wieder in den Normalen zeiger verwandeln

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

    MsgBox(0, "Zip-Datei", "Zip-Datei wurde erstellt Programm wird beendet" )

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

    Gibt es dafür einen bestimmten code?

    edit: Etwas anderes wie ne Sanduhr würde aber auch gehen. Ich bräuchte nur etwas damit der Anwender weis das die Datei noch gepackt wird

    2 Mal editiert, zuletzt von hanswurst (4. Juni 2008 um 16:00)

  • Hmm also ob das ohne GUI geht....
    ansonsten ist es ja GUISetCursor.. da du aber keine GUI zur stelle hast... eventuell geht es noch per DLL aber davon habe ich leider zu wenig ahnung

    Als alternative würde ich dir die Traytip Funktion empfehlen

    [autoit]

    TrayTip("Packen", "Die Dateien werden gepackt bitte warten...", 5000)

    [/autoit]


    z.b. halt :D

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Las mir jetzt ein Fenster anzeigen damit der User weis das die Daten noch gepackt werden:
    Aber ne Sanduhr oder eine andere anzeige wären natürlich besser

    Spoiler anzeigen
    [autoit]


    $Form1 = GUICreate("Bitte warten", 350, 55, -1, -1)
    $Label1 = GUICtrlCreateLabel("Bitte warten, Dateien werden gepackt", 40, 16, 263, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    .
    .
    MsgBox (0,"Zip-Datei erstellen","Zip- Datei wird ertsellt,"& @CRLF & "dies kann je nach größe der Datei etwas dauern")

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

    GUISetState(@SW_SHOW) ; Hier soll sich die Maus in die Sanduhr verwandeln

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

    Zip ($pfad ,$zipdateiname)

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

    GUISetState(@SW_HIDE) ;Hier soll sich die Maus wieder in den Normalen zeiger verwandeln

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

    MsgBox(0, "Zip-Datei", "Zip-Datei wurde erstellt Programm wird beendet" )

    [/autoit] [autoit][/autoit] [autoit][/autoit]
    • Offizieller Beitrag

    Teste mal:

    Spoiler anzeigen
    [autoit]

    ; Cursor setzen

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

    Global Const $OCR_IBEAM = 32513
    Global $hCursor, $hOriginalIBeam, $hCopyCursor

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

    $userDll = DllOpen("user32.dll")

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

    $hOriginalIBeam = DllCall($userDll, "ptr", "LoadCursorFromFile", "str", @WindowsDir & "\Cursors\beam_r.cur")
    $hCursor = DllCall($userDll, "ptr", "LoadCursorFromFile", "str", @WindowsDir & "\Cursors\banana.ani")
    If $hCursor[0] = 0 Then
    MsgBox(0, "Exception", "Please, put a cursor file 'banana.cur' into the script folder.")
    EndIf

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

    $hCopyCursor = DllCall($userDll, "ptr", "CopyImage", "ptr", $hCursor[0], "uint", 2, "int", 0, "int", 0, "uint", 0)
    DllCall($userDll, "ptr", "SetSystemCursor", "ptr", $hCopyCursor[0], "int", $OCR_IBEAM)

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

    Sleep(3000)
    ConsoleWrite(1 & @CRLF)

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

    $hCopyCursor = DllCall($userDll, "ptr", "CopyImage", "ptr", $hOriginalIBeam[0], "uint", 2, "int", 0, "int", 0, "uint", 0)
    DllCall($userDll, "ptr", "SetSystemCursor", "ptr", $hCopyCursor[0], "int", $OCR_IBEAM)

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

    Sleep(3000)
    ConsoleWrite(2 & @CRLF)

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

    ; without the CopyImage(), the following SetSystemCursor()s won't work

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

    $hCopyCursor = DllCall($userDll, "ptr", "CopyImage", "ptr", $hCursor[0], "uint", 2, "int", 0, "int", 0, "uint", 0)
    DllCall($userDll, "ptr", "SetSystemCursor", "ptr", $hCopyCursor[0], "int", $OCR_IBEAM)

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

    Sleep(3000)
    ConsoleWrite(3 & @CRLF)

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

    $hCopyCursor = DllCall($userDll, "ptr", "CopyImage", "ptr", $hOriginalIBeam[0], "uint", 2, "int", 0, "int", 0, "uint", 0)
    DllCall($userDll, "ptr", "SetSystemCursor", "ptr", $hCopyCursor[0], "int", $OCR_IBEAM)

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

    Sleep(3000)

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

    DllCall($userDll, "int", "DestroyCursor", "ptr", $hCursor[0])
    DllCall($userDll, "int", "DestroyCursor", "ptr", $hOriginalIBeam[0])

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

    DllClose($userDll)

    [/autoit]

    Mega

  • Danke ,
    habs erst mal mit guisetcursor gemacht. Die Sanduhr erscheind dann zwar nur wenn ich mit der Maus über dem Fenster bin, aber egal .
    Und falls das nicht ausreicht versuch ich mich halt mal an Xeno´s Lösung