1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. RedHead

Beiträge von RedHead

  • autoit gibte die daten nicht wieder frei

    • RedHead
    • 18. Mai 2013 um 13:10

    danke :) genau da lag mein fehler :D

  • autoit gibte die daten nicht wieder frei

    • RedHead
    • 18. Mai 2013 um 12:38
    Zitat von chip

    Also vorläufiger Workaround bis den genauen Fehler gefunden hast, kannst ja am Ende der _GUIBackUps-Funktion das Script sich selbst einfach neu starten lassen.


    ist hier leider keine möglichkeit...das programm befindet sich im autostart und bevor es zur eigentlichen schleife kommt werden verschiedene dinge abgefragt und erledigt...bei einem neustart würde diese dinge nochmal ablaufen und das sollen die nicht :)


    Zitat von Oscar

    Zeig mal die Funktion "_FileFindAll". Vielleicht wird dort das FileHandle nicht ordnungsgemäß geschlossen?!

    Gerade bei rekursiven Funktionen kann man schnell mal Fehler einbauen.

    hier ist die funktion

    Spoiler anzeigen
    [autoit]

    Func _FileFindAll($s_path, ByRef $a_found, $s_filetype = False, $s_filename = False)
    If $s_path = "" Or Not IsArray($a_found) Then Return SetError(-1)
    If StringRegExp(StringLeft($s_path, 1), "[a-zA-Z]") And StringMid($s_path, 2, 1) = ":" Then
    If StringRight($s_path, 1) <> "\" Then $s_path &= "\"
    Local $s_suchen, $s_weitersuchen, $i_ubound
    If $s_filetype And StringLeft($s_filetype, 1) <> "*" Then $s_filetype = "*" & $s_filetype
    $s_suchen = FileFindFirstFile($s_path & "*")
    If $s_suchen = -1 Then Return SetError(-2)
    While 1
    $s_weitersuchen = FileFindNextFile($s_suchen)
    If @error Then ExitLoop
    If @extended Then _FileFindAll($s_path & $s_weitersuchen & "\", $a_found, $s_filetype, $s_filename)
    If $s_filetype And Not $s_filename Then
    If StringRight($s_weitersuchen, StringLen($s_filetype) - 1) = StringTrimLeft($s_filetype, 1) Then
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    ElseIf $s_filename And Not $s_filetype Then
    If StringLeft($s_weitersuchen, StringLen($s_filename)) = $s_filename Then
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    ElseIf $s_filename And $s_filetype Then
    If (StringRight($s_weitersuchen, StringLen($s_filetype) - 1) = StringTrimLeft($s_filetype, 1)) And (StringLeft($s_weitersuchen, StringLen($s_filename)) = $s_filename) Then
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    Else
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    WEnd
    $a_found[0] = UBound($a_found) - 1
    Return $a_found
    Else
    Return SetError(-1)
    EndIf
    EndFunc

    [/autoit]

    jetzt wo du es sagst...bei mir fehlt doch nach der whileschleife ein fileclose($s_weitersuchen), oder? :)

  • autoit gibte die daten nicht wieder frei

    • RedHead
    • 18. Mai 2013 um 11:09

    hi leute...es geht um folgendes...ich habe mir background program geschrieben, welches die ganze zeit im hintergrund läuft. dabei werden an einer stelle verschiedene prozesse abgefragt, ob diese gerade laufen. bei manchen sollen dann gewisse daten gesichert werden, sobald die nicht mehr laufen. wenn ich nun ein program (z.B. Baldurs Gate 2) starte befindet sich mein backgroundprogram wie angegeben im "schlafmodus" und sobald ich nun Baldurs Gate 2 beende sichert mein program gewisse daten und kopiert sie auf eine andere festplatte. das funktioniert auch super. doch sobald ich dann Baldurs Gate 2 erneut starte (nachdem der kopiervorgang beendet ist) und im spiel speicher will kommt die meldung, dass das spiel nicht gespeichert werden konnte. doch sobald ich nun mein backgroundprgram beende und es erneut versuche klappt es. wahrscheinlich gibt autoit die daten nicht wieder frei :( kann mir ein bei dem problem helfen? das problem entsteht allerdings nur wenn die funktion "_GUIBackUps($s_source, $s_destination)" aufgerufen wird.

    hier man codeausschnitte die vielleicht wichtig sein könnten:

    Spoiler anzeigen

    die überprüfung ob die prozesse gerade laufen oder nicht

    [autoit]

    For $i = 1 To $a_backups_process_schleife[0][0]
    If ProcessExists($a_backups_process_schleife[$i][1]) Then
    _ProcessWaitClose($a_backups_process_schleife[$i][1])
    Sleep(1000)
    If Ceiling(DirGetSize($a_backups_source_schleife[$i][1]) / 1024 / 1024) > 5 Then
    _GUIBackUps($a_backups_source_schleife[$i][1], $a_backups_destination_schleife[$i][1])
    Else
    DirCopy($a_backups_source_schleife[$i][1], $a_backups_destination_schleife[$i][1], 1)
    EndIf
    MsgBox(64, "Info", "Daten von '" & $a_backups_process_schleife[$i][1] & "' wurden erfolgreich gesichert!", 3)
    EndIf
    Next

    [/autoit]

    die funktion "GUIBackUps($s_source, $s_destination)" die wahrscheinlich für mein problem verantwortlich ist
    die funktion "_FileFindAll($s_source, $a_data)" dient nur zur rekursiven dateinfindung
    die funktion "_GetDataName($a_data[$i])" gibt, wie man sich bestimmt denken kann, lediglich den dateinamen zurück

    [autoit]

    Func _GUIBackUps($s_source, $s_destination)
    Local $a_data[1] = [0]

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

    _FileFindAll($s_source, $a_data)

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

    Local $h_GUI = GUICreate("Background - Backups", 300, 50, -1, -1, BitOR($WS_BORDER, $WS_POPUP))
    Local $h_label = GUICtrlCreateLabel("", 5, 5, 290, 20)
    Local $h_progress = GUICtrlCreateProgress(5, 25, 290, 20)
    GUISetState(@SW_SHOW, $h_GUI)

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

    For $i = 1 To $a_data[0]
    GUICtrlSetData($h_label, _GetDataName($a_data[$i]))
    GUICtrlSetData($h_progress, ($i / $a_data[0]) * 100)
    FileCopy($a_data[$i], $s_destination & "\" & StringTrimLeft($a_data[$i], StringLen($s_source)), 1 + 8)
    Next
    GUIDelete($h_GUI)
    EndFunc

    [/autoit]
  • Prgressbar mit for schleife synchronisieren.

    • RedHead
    • 16. Mai 2013 um 12:20

    vielleicht so:

    [autoit]

    For $i = 0 To 15349
    GUICtrlSetData($h_progress, ($i / 15349) * 100)
    Next

    [/autoit]
  • Binäruhr

    • RedHead
    • 15. Mai 2013 um 13:56

    ein neues update :)

  • Dateien zählen und vergleichen

    • RedHead
    • 2. Mai 2013 um 16:48

    vielleicht hilft dir das hier weiter...

    Spoiler anzeigen
    [autoit]

    Func _Datenabgleich($s_source_one, $s_source_two, $f_name = True, $f_date = False, $f_size = False)
    If (Not IsString($s_source_one)) Or (Not IsString($s_source_two)) Or Not IsBool($f_name) Or Not IsBool($f_date) Or Not IsBool($f_size) Then
    Return SetError(-1)
    ElseIf Not StringRegExp(StringLeft($s_source_one, 1), "[a-zA-Z]") Or StringMid($s_source_one, 2, 1) <> ":" Then
    Return SetError(-2)
    ElseIf Not StringRegExp(StringLeft($s_source_two, 1), "[a-zA-Z]") Or StringMid($s_source_two, 2, 1) <> ":" Then
    Return SetError(-3)
    EndIf
    Local $a_source_one[1] = [0], $a_source_two[1] = [0], $f_notfound = True, $a_notfound[1] = [0]

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

    _FileFindAll($s_source_one, $a_source_one)
    _FileFindAll($s_source_two, $a_source_two)

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

    For $i = 1 To $a_source_one[0]
    $f_notfound = True
    For $x = $a_source_two[0] To 1 Step - 1
    If $f_name Then
    If _GetDataName($a_source_one[$i]) = _GetDataName($a_source_two[$x]) Then
    $f_notfound = False
    ExitLoop 1
    EndIf
    ElseIf $f_date Then
    If FileGetTime($a_source_one[$i], 0, 1) = FileGetTime($a_source_two[$x], 0, 1) Then
    $f_notfound = False
    ExitLoop 1
    EndIf
    ElseIf $f_size Then
    If FileGetSize($a_source_one[$i]) = FileGetSize($a_source_two[$x]) Then
    $f_notfound = False
    ExitLoop 1
    EndIf
    ElseIf $f_name And $f_date Then
    If _GetDataName($a_source_one[$i]) = _GetDataName($a_source_two[$x]) And FileGetTime($a_source_one[$i], 0, 1) = FileGetTime($a_source_two[$x], 0, 1) Then
    $f_notfound = False
    ExitLoop 1
    EndIf
    ElseIf $f_name And $f_size Then
    If _GetDataName($a_source_one[$i]) = _GetDataName($a_source_two[$x]) And FileGetSize($a_source_one[$i]) = FileGetSize($a_source_two[$x]) Then
    $f_notfound = False
    ExitLoop 1
    EndIf
    ElseIf $f_date And $f_size Then
    If FileGetTime($a_source_one[$i], 0, 1) = FileGetTime($a_source_two[$x], 0, 1) And FileGetSize($a_source_one[$i]) = FileGetSize($a_source_two[$x]) Then
    $f_notfound = False
    ExitLoop 1
    EndIf
    ElseIf $f_name And $f_date And $f_size Then
    If _GetDataName($a_source_one[$i]) = _GetDataName($a_source_two[$x]) And FileGetSize($a_source_one[$i]) = FileGetSize($a_source_two[$x]) And FileGetTime($a_source_one[$i], 0, 1) = FileGetTime($a_source_two[$x], 0, 1) Then
    $f_notfound = False
    ExitLoop 1
    EndIf
    EndIf
    Next
    If $f_notfound Then
    $i_ubound = UBound($a_notfound, 1)
    ReDim $a_notfound[$i_ubound + 1]
    $a_notfound[$i_ubound] = $a_source_one[$i]
    $a_notfound[0] += 1
    EndIf
    Next
    Return $a_notfound
    EndFunc

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

    Func _GetDataName($s_data)
    Local $a_data = StringSplit($s_data, "\")
    Return $a_data[$a_data[0]]
    EndFunc

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

    Func _FileFindAll($s_path, ByRef $a_found, $s_filetype = False, $s_filename = False)
    If $s_path = "" Or Not IsArray($a_found) Then Return SetError(-1)
    If StringRegExp(StringLeft($s_path, 1), "[a-zA-Z]") And StringMid($s_path, 2, 1) = ":" Then
    If StringRight($s_path, 1) <> "\" Then $s_path &= "\"
    Local $s_suchen, $s_weitersuchen, $i_ubound
    If $s_filetype And StringLeft($s_filetype, 1) <> "*" Then $s_filetype = "*" & $s_filetype
    $s_suchen = FileFindFirstFile($s_path & "*")
    If $s_suchen = -1 Then Return SetError(-2)
    While 1
    $s_weitersuchen = FileFindNextFile($s_suchen)
    If @error Then ExitLoop
    If @extended Then _FileFindAll($s_path & $s_weitersuchen & "\", $a_found, $s_filetype, $s_filename)
    If $s_filetype And Not $s_filename Then
    If StringRight($s_weitersuchen, StringLen($s_filetype) - 1) = StringTrimLeft($s_filetype, 1) Then
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    ElseIf $s_filename And Not $s_filetype Then
    If StringLeft($s_weitersuchen, StringLen($s_filename)) = $s_filename Then
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    ElseIf $s_filename And $s_filetype Then
    If (StringRight($s_weitersuchen, StringLen($s_filetype) - 1) = StringTrimLeft($s_filetype, 1)) And (StringLeft($s_weitersuchen, StringLen($s_filename)) = $s_filename) Then
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    Else
    $i_ubound = UBound($a_found, 1)
    ReDim $a_found[$i_ubound + 1]
    $a_found[$i_ubound] = $s_path & $s_weitersuchen
    EndIf
    WEnd
    $a_found[0] = UBound($a_found) - 1
    Return $a_found
    Else
    Return SetError(-1)
    EndIf
    EndFunc

    [/autoit]
  • Binäruhr

    • RedHead
    • 1. Mai 2013 um 20:26

    eine binäruhr wurde zwar schon in autoit umgesetzt und eigentlich sollte ich fürs abi lernen, aber mir war gerade langweilig :D somit stelle ich mal meine binäruhr vor...kritik, lob und vorschläge zur verbesserung sind erwünscht :)

    Update1:
    kleine anpassungen

    Update2:
    -jetzt auch als bildschirmschoner nutzbar
    -code gekürzt


    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile_x64=Binäruhr.exe
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.2
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>

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

    HotKeySet("{ESC}", "_Binaeruhr_Terminate")

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

    Global $x_schwarz = 0x000000, $x_on = 0xF61A00, $x_off = 0xF0F0F0, $s_type = _FileGetType()
    Global $a_ellipse_hour[5][2] = [[115, 380], [115, 300], [115, 220], [35, 380], _
    [35, 300]]
    Global $a_ellipse_min[6][2] = [[300, 380], [300, 300], [300, 220], [220, 380], _
    [220, 300], [220, 220]]
    Global $a_ellipse_sec[6][2] = [[480, 380], [480, 300], [480, 220], [400, 380], _
    [400, 300], [400, 220]]

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

    Global $a_length[3] = [6, 6, 5]
    Global $a_SMHellipse[3] = [$a_ellipse_sec, $a_ellipse_min, $a_ellipse_hour]

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

    _GDIPlus_StartUp()

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

    Global $h_stift = _GDIPlus_PenCreate(0xFF000000 + $x_schwarz, 1)
    Global $h_on = _GDIPlus_BrushCreateSolid(0xFF000000 + $x_on)
    Global $h_off = _GDIPlus_BrushCreateSolid(0xFF000000 + $x_off)

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

    Global $h_GUI = GUICreate("Binäruhr", 600, 480, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP),$WS_EX_TOPMOST)
    GUISetOnEvent(-3, "_Binaeruhr_Terminate")
    GUISetBkColor($x_schwarz, $h_GUI)
    Global $h_graphic = _GDIPlus_GraphicsCreateFromHWND($h_GUI)
    _GDIPlus_GraphicsSetSmoothingMode($h_graphic, 2)
    Global $h_UhrzeitDigital = GUICtrlCreateLabel(@HOUR & ":" & @MIN & ":" & @SEC, 45, 50, 500, 150)
    GUICtrlSetBkColor($h_UhrzeitDigital, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont($h_UhrzeitDigital, 95, 400, 0, "Arial")
    GUICtrlSetColor($h_UhrzeitDigital, $x_on)
    GUISetCursor(16, 1, $h_GUI)

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

    Global $h_trans = GUICreate("", @DesktopWidth + 5, @DesktopHeight + 5, -5, -5, $WS_POPUP, $DS_MODALFRAME)
    GUISetBkColor($x_schwarz)
    WinSetTrans($h_trans, "", 100)
    GUISetCursor(16, 1, $h_trans)

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

    GUISetState(@SW_SHOW, $h_trans)
    GUISetState(@SW_SHOW, $h_GUI)

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

    If $s_type = "scr" Then
    Global $a_pos_start = MouseGetPos(), $a_pos_run
    While True
    _Binaeruhr_Update()
    Sleep(100)
    $a_pos_run = MouseGetPos()
    If $a_pos_run[0] <> $a_pos_start[0] Or $a_pos_run[1] <> $a_pos_start[1] Then _Binaeruhr_Terminate()
    WEnd
    Else
    While True
    _Binaeruhr_Update()
    Sleep(100)
    WEnd
    EndIf

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

    Func _Binaeruhr_Terminate()
    _GUIFadeInOut($h_GUI, False, 8)
    GUIDelete($h_GUI)
    GUIDelete($h_trans)
    _GDIPlus_GraphicsDispose($h_graphic)
    _GDIPlus_PenDispose($h_stift)
    _GDIPlus_BrushDispose($h_on)
    _GDIPlus_BrushDispose($h_off)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

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

    Func _Binaeruhr_Update()
    If GUICtrlRead($h_UhrzeitDigital) <> @HOUR & ":" & @MIN & ":" & @SEC Then GUICtrlSetData($h_UhrzeitDigital, @HOUR & ":" & @MIN & ":" & @SEC)

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

    Local $a_SMH[3] = [@SEC, @MIN, @HOUR]
    Local $b_time, $a_time

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

    For $x = 0 To 2
    $b_time = _IntegerToBinary($a_SMH[$x])
    $b_time = _BinaerstringAuffuellen($b_time, $a_length[$x])
    $a_time = StringSplit($b_time, "")
    $a_time = _ArrayElementeTauschen($a_time)
    _PunkteFuellen($a_time, $a_SMHellipse[$x])
    Next
    EndFunc

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

    Func _PunkteFuellen($a_array, $a_ellipse)
    For $i = 1 To $a_array[0]
    If $a_array[$i] = 1 Then
    Local $h_farbe = $h_on
    Else
    Local $h_farbe = $h_off
    EndIf
    _GDIPlus_GraphicsFillEllipse($h_graphic, $a_ellipse[$i - 1][0], $a_ellipse[$i - 1][1], 70, 70, $h_farbe)
    _GDIPlus_GraphicsDrawEllipse($h_graphic, $a_ellipse[$i - 1][0], $a_ellipse[$i - 1][1], 70, 70, $h_stift)
    Next
    EndFunc

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

    Func _IntegerToBinary($v_number)
    $b_binary = ""
    Do
    $b_binary = Mod($v_number, 2) & $b_binary
    $v_number = Floor($v_number/2)
    Until $v_number = 0
    Return $b_binary
    EndFunc

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

    Func _ArrayElementeTauschen($a_array)
    Local $v_rubbish, $i_ubound

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

    If Mod($a_array[0], 2) = 0 Then
    $i_ubound = ($a_array[0] / 2)
    Else
    $i_ubound = (($a_array[0] - 1) / 2)
    EndIf

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

    For $i = 1 To $i_ubound
    $v_rubbish = $a_array[$i]
    $a_array[$i] = $a_array[$a_array[0] - $i + 1]
    $a_array[$a_array[0] - $i + 1] = $v_rubbish
    Next
    Return $a_array
    EndFunc

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

    Func _BinaerstringAuffuellen($s_binary, $i_length)
    If StringLen($s_binary) < $i_length Then
    Do
    $s_binary = "0" & $s_binary
    Until StringLen($s_binary) = $i_length
    EndIf
    Return $s_binary
    EndFunc

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

    Func _GUIFadeInOut($hGUI, $bFadeIn = True, $iSpeed = 12) ; by Marsi
    If Not (IsHWnd($hGUI) And IsBool($bFadeIn) And ($iSpeed > 0)) Then Return SetError(-1 * (Not IsHWnd($hGUI)) - 2 * (Not IsBool($bFadeIn)) - 4 * (Not ($iSpeed > 0)))
    If $bFadeIn Then GUISetState(@SW_SHOW + 0 * WinSetTrans($hGUI, "", 255 * (Not $bFadeIn)), $hGUI)
    For $i = 0 To 255 Step $iSpeed
    WinSetTrans($hGUI, "", (2 * $i - 255) * $bFadeIn + (255 - $i) + 0 * Sleep(10))
    Next
    WinSetTrans($hGUI, "", 255 * $bFadeIn) ; Korrigiert Fehler, wenn die Schleife nicht bei 0 oder 255 endet.
    If Not $bFadeIn Then GUISetState(@SW_HIDE, $hGUI)
    EndFunc

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

    Func _FileGetType($s_path = @ScriptFullPath)
    If StringRegExp(StringLeft($s_path, 1), "[a-zA-Z]") And StringMid($s_path, 2, 1) = ":" Then
    Local $a_path = StringSplit($s_path, ".")
    Return $a_path[$a_path[0]]
    Else
    Return SetError(-1)
    EndIf
    EndFunc

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

    Dateien

    Bin 5,23 kB – 442 Downloads
  • ständige windows fehlermeldung beim beenden des scripts

    • RedHead
    • 1. Mai 2013 um 20:17

    danke für den tipp ;)

    super...danke...genau daran lag es :)

  • ständige windows fehlermeldung beim beenden des scripts

    • RedHead
    • 1. Mai 2013 um 19:51

    ich habe ein problem....es kommt ständig eine fehlermeldung beim beenden, dass das script nicht mehr reagiert :( kann mir einer weiter helfen und verraten woran das liegen könnte? :)

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    ;~ #include "Z:\BackUps\AutoIt - Scripts\##Fertig\Background\UDF - Sammlung.au3"
    #include <GDIPlus.au3>
    #Include <Color.au3>

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

    HotKeySet("{ESC}", "_Binaeruhr_Terminate")

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

    Global $x_schwarz = 0x000000, $x_on = 0xF61A00, $x_off = 0xF0F0F0
    Global $a_ellipse_hour[5][2] = [[110, 380], [110, 300], [110, 220], [10, 380], _
    [10, 300]]
    Global $a_ellipse_min[6][2] = [[310, 380], [310, 300], [310, 220], [210, 380], _
    [210, 300], [210, 220]]
    Global $a_ellipse_sec[6][2] = [[510, 380], [510, 300], [510, 220], [410, 380], _
    [410, 300], [410, 220]]

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

    _GDIPlus_StartUp()

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

    Global $h_stift = _GDIPlus_PenCreate("0xFF" & Hex(_ColorGetRed($x_schwarz), 2) & Hex(_ColorGetGreen($x_schwarz), 2) & Hex(_ColorGetBlue($x_schwarz), 2), 1)
    Global $h_on = _GDIPlus_BrushCreateSolid("0xFF" & Hex(_ColorGetRed($x_on), 2) & Hex(_ColorGetGreen($x_on), 2) & Hex(_ColorGetBlue($x_on), 2))
    Global $h_off = _GDIPlus_BrushCreateSolid("0xFF" & Hex(_ColorGetRed($x_off), 2) & Hex(_ColorGetGreen($x_off), 2) & Hex(_ColorGetBlue($x_off), 2))

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

    Global $h_GUI = GUICreate("Binäruhr", 600, 480, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP),$WS_EX_TOPMOST)
    GUISetOnEvent(-3, "_Binaeruhr_Terminate")
    GUISetBkColor($x_schwarz, $h_GUI)
    Global $h_UhrzeitDigital = GUICtrlCreateLabel(@HOUR & ":" & @MIN & ":" & @SEC, 70, 50, 460, 150)
    GUICtrlSetBkColor($h_UhrzeitDigital, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont($h_UhrzeitDigital, 85, 400, 0, "Arial")
    GUICtrlSetColor($h_UhrzeitDigital, $x_on)
    GUISetCursor(16, 1, $h_GUI)
    Global $h_graphic = _GDIPlus_GraphicsCreateFromHWND($h_GUI)
    _GDIPlus_GraphicsSetSmoothingMode($h_graphic, 2)
    Global $h_trans = GUICreate("", @DesktopWidth + 5, @DesktopHeight + 5, -5, -5, $WS_POPUP, $DS_MODALFRAME)
    GUISetBkColor($x_schwarz)
    WinSetTrans($h_trans, "", 60)
    GUISetState(@SW_SHOW, $h_trans)
    GUISetCursor(16, 1, $h_trans)
    ;~ _GUIFadeInOut($h_GUI, True, 8)
    GUISetState(@SW_SHOW, $h_GUI)

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

    While True
    Sleep(50)
    _Binaeruhr_Update()
    WEnd

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

    Func _Binaeruhr_Terminate()
    ;~ _GUIFadeInOut($h_GUI, False, 8)
    _GDIPlus_GraphicsDispose($h_graphic)
    _GDIPlus_PenDispose($h_stift)
    _GDIPlus_BrushDispose($x_on)
    _GDIPlus_BrushDispose($x_off)
    _GDIPlus_Shutdown()
    GUIDelete($h_GUI)
    GUIDelete($h_trans)
    Exit
    EndFunc

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

    Func _Punkt($i_on, $i_x, $i_y)
    If $i_on = 1 Then
    Local $h_farbe = $h_on
    Else
    Local $h_farbe = $h_off
    EndIf
    _GDIPlus_GraphicsFillEllipse($h_graphic, $i_x, $i_y, 70, 70, $h_farbe)
    _GDIPlus_GraphicsDrawEllipse($h_graphic, $i_x, $i_y, 70, 70, $h_stift)
    EndFunc

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

    Func _Binaeruhr_Update()
    If GUICtrlRead($h_UhrzeitDigital) <> @HOUR & ":" & @MIN & ":" & @SEC Then GUICtrlSetData($h_UhrzeitDigital, @HOUR & ":" & @MIN & ":" & @SEC)
    Local $b_time = _IntegerToBinary(@SEC)

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

    If StringLen($b_time) < 6 Then
    Do
    $b_time = "0" & $b_time
    Until StringLen($b_time) = 6
    EndIf

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

    Local $a_sekunde = StringSplit($b_time, "")
    $a_sekunde = _ArrayElementeTauschen($a_sekunde)

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

    For $i = 1 To $a_sekunde[0]
    _Punkt($a_sekunde[$i], $a_ellipse_sec[$i - 1][0], $a_ellipse_sec[$i - 1][1])
    Next

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

    $b_time = _IntegerToBinary(@MIN)

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

    If StringLen($b_time) < 6 Then
    Do
    $b_time = "0" & $b_time
    Until StringLen($b_time) = 6
    EndIf

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

    Local $a_minute = StringSplit($b_time, "")
    $a_minute = _ArrayElementeTauschen($a_minute)

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

    For $i = 1 To $a_minute[0]
    _Punkt($a_minute[$i], $a_ellipse_min[$i - 1][0], $a_ellipse_min[$i - 1][1])
    Next

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

    $b_time = _IntegerToBinary(@HOUR)

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

    If StringLen($b_time) < 5 Then
    Do
    $b_time = "0" & $b_time
    Until StringLen($b_time) = 5
    EndIf

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

    Local $a_hour = StringSplit($b_time, "")
    $a_hour = _ArrayElementeTauschen($a_hour)

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

    For $i = 1 To $a_hour[0]
    _Punkt($a_hour[$i], $a_ellipse_hour[$i - 1][0], $a_ellipse_hour[$i - 1][1])
    Next
    EndFunc

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

    Func _IntegerToBinary($v_number)
    $b_binary = ""
    Do
    $b_binary = Mod($v_number, 2) & $b_binary
    $v_number = Floor($v_number/2)
    Until $v_number = 0
    Return $b_binary
    EndFunc

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

    Func _ArrayElementeTauschen($a_array)
    Local $v_rubbish

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

    If Mod($a_array[0], 2) = 0 Then
    For $i = 1 To ($a_array[0] / 2)
    $v_rubbish = $a_array[$i]
    $a_array[$i] = $a_array[$a_array[0] - $i + 1]
    $a_array[$a_array[0] - $i + 1] = $v_rubbish
    Next
    Else
    For $i = 1 To (($a_array[0] - 1) / 2)
    $v_rubbish = $a_array[$i]
    $a_array[$i] = $a_array[$a_array[0] - $i + 1]
    $a_array[$a_array[0] - $i + 1] = $v_rubbish
    Next
    EndIf
    Return $a_array
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • RedHead
    • 29. März 2013 um 18:20

    ich habe ein problem...bei mir kommt immer folgende fehlermeldung

    Z:\BackUps\AutoIt - Scripts\##Fertig\Fremde Scripts\Listview\LV_Format_include[1.3].au3 (257) : ==> The requested action with this object has failed.:
    Local $index = $FORMATLV_oPARAM_SEARCH.Item($iParam)
    Local $index = $FORMATLV_oPARAM_SEARCH.Item($iParam)^ ERROR

    liegt das daran das ich win 7 64 bit verwende oder ist das einfach ein fehler im script?

  • zeile in einer selbsterstellten tabelle färben

    • RedHead
    • 29. März 2013 um 12:28

    hi leute,
    ich habe folgendes problem. ich erzeuge mit den befehlen "GUICtrlCreateListView(), _GUICtrlListView_InsertColumn(), _GUICtrlListView_AddItem() und _GUICtrlListView_AddSubItem()" eine tabelle. nun möchte ich aber dass die zeile(n), die in einer spalte den größten wert haben, farbig angezeigt werden.
    leider weiß ich nicht wie ich das umsetzen kann :( vielleicht übersehe ich auch einfach nur den passenden befehl :( kann mir einer helfen? :)

  • [UDF ArrayEx] Benutzerdefinierte Funktionen für Arrays

    • RedHead
    • 16. März 2013 um 11:10

    der teil mit

    [autoit]

    Func _ArrayExCompare($aArray1, $aArray2)

    EndFunc

    [/autoit]

    ist immer noch unverändert :D

    zu der funktion "_ArrayExConvertToUserDefined($aArray)"....du fragst dort 5 mal ab ob die dimension des arrays mit einem bestimmten wert übereinstimmt

    [autoit]

    If UBound($aArray,0) = 1 Then

    EndIf
    If UBound($aArray,0) = 2 Then

    EndIf
    If UBound($aArray,0) = 3 Then

    EndIf
    If UBound($aArray,0) = 4 Then

    EndIf
    If UBound($aArray,0) = 5 Then

    EndIf

    [/autoit]

    ...unnötig...verwende doch einfach einen switch befehl

    [autoit]

    Switch UBound($aArray, 0)
    Case 1

    Case 2

    Case 3

    Case 4

    Case 5

    EndSwitch

    [/autoit]

    aber ansonsten finde ich die funktionen ganz gut :thumbup: kann sie gerade nur nicht genau testen da ich keine verwendung dafür habe :)

  • Frage zu sauberer Syntax

    • RedHead
    • 27. Februar 2013 um 09:18

    $h = handle (zb. $h_gui)
    $i = integer
    $b = bool
    usw.

  • brauche hilfe bei c++

    • RedHead
    • 3. Dezember 2012 um 14:30

    hi leute...
    ich weiß das das hier das falsche forum für cc++ ist, aber ich hoffe mal das sich einige damit auskennen :)

    folgendes:
    ich möchte c++ lerne und komme allerdings nicht ganz klar....z.b. habe ich totale verständnisprobleme beim vererben und wie das so mit der schreibweiße in c++ generell ist :(
    naja...auf jedenfall habe ich mir gedacht das es für mich leichter wäre c++ zu verstehen wenn man 2 scripte mit dem selben inhalt (einmal in c++ und einmal in autoit) hat :)
    so könnte man die einzelnen schritte besser verstehen, da ich es dann ja mit dem autoitcode "abgleichen" und so hoffentlich c++ besser verstehen kann :)

    im moment versuch ich in c++ die scripte nach zu bauen die ich bereits in autoit geschrieben habe...und da wollte ich fragen ob mir jemand dabei helfen kann z.b. folgendes script in c++ zu übersetzen ;) damit meine ich jetzt natürlich nicht komplett ( was natürlich auch nicht schlecht wäre :D), sonder mit lediglich denkanstöße gibt, indem er mir die nötigen befehle in c++ verrät :)

    Spoiler anzeigen
    [autoit]

    Func _CreateDriveInkOnDesktop()
    Local $a_drive = DriveGetDrive("ALL")
    Local $a_driveondesktop = _GetDriveInkOnDesktop()
    Local $f_notfound = True, $s_drivelabel = "", $f_delete = True, $f_nichtidentisch = True

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

    If $a_drive[0] > $a_driveondesktop[0] Then
    For $i = 1 To $a_drive[0]
    $a_drive[$i] = StringUpper(StringLeft($a_drive[$i], 1)) & ":"
    $f_notfound = True
    For $x = 1 To $a_driveondesktop[0]
    If StringLeft($a_drive[$i], 1) = StringMid($a_driveondesktop[$x], 2, 1) Then $f_notfound = False
    Next
    If $f_notfound Then
    $s_drivelabel = DriveGetLabel($a_drive[$i])
    If @error Then $s_drivelabel = "UNKNOWN"
    FileCreateShortcut($a_drive[$i] & "\", @DesktopDir & "\(" & StringLeft($a_drive[$i], 1) & ") - " & $s_drivelabel)
    EndIf
    Next
    ElseIf $a_drive[0] < $a_driveondesktop[0] Then
    For $i = 1 To $a_driveondesktop[0]
    $f_delete = True
    For $x = 1 To $a_drive[0]
    If StringMid($a_driveondesktop[$i], 2, 1) = StringLeft($a_drive[$x], 1) Then $f_delete = False
    Next
    If $f_delete Then FileDelete(@DesktopDir & "\" & $a_driveondesktop[$i])
    Next
    EndIf
    EndFunc

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

    Func _GetDriveInkOnDesktop()
    Local $h_search = FileFindFirstFile(@DesktopDir & "\*")
    Local $s_inkfiles = "", $a_array[1] = [0]

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

    While 1
    $s_file = FileFindNextFile($h_search)
    If @error Then ExitLoop
    If StringLeft($s_file, 1) = "(" And StringRegExp(StringMid($s_file, 2, 1), "[a-zA-Z]") And StringMid($s_file, 3, 1) = ")" Then $s_inkfiles &= $s_file & "|"
    WEnd

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

    FileClose($h_search)

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

    If $s_inkfiles = "" Then
    Return $a_array
    Else
    Return StringSplit(StringTrimRight($s_inkfiles, 1), "|")
    EndIf
    EndFunc

    [/autoit]
  • 2 Scripte zu einem machen

    • RedHead
    • 28. November 2012 um 17:10

    wieso willst du es denn unbedingt in einem script haben?

    am einfachsten wäre es doch einfach anzugeben das das 2 script gestartet werden soll wenn der counter 00 - 00:00:00 erreicht hat :P

  • Ping gibt falschen Wert zurück

    • RedHead
    • 28. November 2012 um 17:06

    mit @error fragst du hier die msgbox ab und nicht das pingen :P
    du fragst ab ob es beim erstellen der msgbox zu fehlern gekommen ist :P

  • 0 = "" (Null gleich leer)

    • RedHead
    • 21. November 2012 um 11:16

    probiers mal mit

    [autoit]

    If 0 == "" Then
    MsgBox(0, "", "gleich")
    EndIf

    [/autoit]
  • eintrag beim "rechtsklickmenü" von datein hinzufügen

    • RedHead
    • 21. November 2012 um 11:15
    Zitat von chesstiger

    Das "Rechtsklickmenü" nennt sich Kontextmenü.

    ja ich mir ist der name nicht dafür eingefallen :D aber offenbar wussten ja alle was gemeint war :)

    Zitat von BugFix

    $sKey = 'HKEY_CLASSES_ROOT\Folder\shell\' & $newProgramName
    RegWrite($sKey)
    $sKey = 'HKEY_CLASSES_ROOT\Folder\shell\' & $newProgramName & '\command'
    RegWrite($sKey)
    RegWrite($sKey, '', 'REG_SZ', $newProgramPath & " %1")

    Danke :) aber das betrifft doch jetzt nur das kontextmenü von ordner...was muss ich ändern damit es das kontextmenü von files betrifft? einfach "Folder" durch "Files" ersetzten?? :)


    Zitat von Andy

    Hi,

    eine weitere Möglichkeit wäre, dein Programm in den "Send to" Ordner zu legen, es erscheint dann automatisch als Ziel im Kontextmenü unter "Senden an..."

    Das macht vor allem bei Dateioperationen Sinn, da man die so übergebenen Dateien einfach im AutoItscript per

    AutoIt-QuellcodeCode kopieren

    $CMDLINE[]

    auswerten kann.

    Auf diese Art könne aber nur bis zu 63 Dateien gleichzeitig übergeben werden (Win32).

    Alles anzeigen

    gut zu wissen :) allerdings habe ich mit "$CMDLINE[]" noch nie gearbeitet und weiß auch nicht wie das geht ;)

  • eintrag beim "rechtsklickmenü" von datein hinzufügen

    • RedHead
    • 20. November 2012 um 17:51

    hi leute....
    wenn man einen rechtsklick auf eine datei macht, dann wird in der regel ein menü ausgeklappt :) meine frage ist nun wie ich selber dort ein eintrag in das menü schreiben kann und bei einem klick auf meinen eintrag eben ein bestimmte aktion ausgeführt wird? :) da programme wie 7zip auch solche einträge hinzufügen denke ich mal, dass das auch i-wie mit autoit möglich sein wird :) allerdings habe ich keinen ahnung wie...noch nicht einmal einen ansatz :( kann mir einer helfen? :)

  • Hilfe für ein kleines AutoIt-Script (Taste "sperren")

    • RedHead
    • 20. Oktober 2012 um 17:23

    also was mir jetzt so spontan einfällt ist das man mit

    [autoit]

    _ispressed()

    [/autoit]

    immer den tastenstatus abfrag und sobald "Alt - Groß" gedrückt ist, sendet man einfach "alt - groß up" :) musst natürlich in der hilfedatei die richtige tastenbezeichnung nach gucken ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™