danke
genau da lag mein fehler ![]()
Beiträge von RedHead
-
-
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
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)
[/autoit]
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
EndFuncjetzt wo du es sagst...bei mir fehlt doch nach der whileschleife ein fileclose($s_weitersuchen), oder?

-
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]
[/autoit]
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
Nextdie funktion "GUIBackUps($s_source, $s_destination)" die wahrscheinlich für mein problem verantwortlich ist
[autoit]
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ückFunc _GUIBackUps($s_source, $s_destination)
[/autoit] [autoit][/autoit] [autoit]
Local $a_data[1] = [0]_FileFindAll($s_source, $a_data)
[/autoit] [autoit][/autoit] [autoit]Local $h_GUI = GUICreate("Background - Backups", 300, 50, -1, -1, BitOR($WS_BORDER, $WS_POPUP))
[/autoit] [autoit][/autoit] [autoit]
Local $h_label = GUICtrlCreateLabel("", 5, 5, 290, 20)
Local $h_progress = GUICtrlCreateProgress(5, 25, 290, 20)
GUISetState(@SW_SHOW, $h_GUI)For $i = 1 To $a_data[0]
[/autoit]
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 +
Next
GUIDelete($h_GUI)
EndFunc -
vielleicht so:
[autoit]For $i = 0 To 15349
[/autoit]
GUICtrlSetData($h_progress, ($i / 15349) * 100)
Next -
ein neues update

-
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)
[/autoit] [autoit][/autoit] [autoit]
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]_FileFindAll($s_source_one, $a_source_one)
[/autoit] [autoit][/autoit] [autoit]
_FileFindAll($s_source_two, $a_source_two)For $i = 1 To $a_source_one[0]
[/autoit] [autoit][/autoit] [autoit]
$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
EndFuncFunc _GetDataName($s_data)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $a_data = StringSplit($s_data, "\")
Return $a_data[$a_data[0]]
EndFuncFunc _FileFindAll($s_path, ByRef $a_found, $s_filetype = False, $s_filename = False)
[/autoit]
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 -
eine binäruhr wurde zwar schon in autoit umgesetzt und eigentlich sollte ich fürs abi lernen, aber mir war gerade langweilig
somit stelle ich mal meine binäruhr vor...kritik, lob und vorschläge zur verbesserung sind erwünscht 
Update1:
kleine anpassungenUpdate2:
-jetzt auch als bildschirmschoner nutzbar
-code gekürztSpoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#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>HotKeySet("{ESC}", "_Binaeruhr_Terminate")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Global $x_schwarz = 0x000000, $x_on = 0xF61A00, $x_off = 0xF0F0F0, $s_type = _FileGetType()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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]]Global $a_length[3] = [6, 6, 5]
[/autoit] [autoit][/autoit] [autoit]
Global $a_SMHellipse[3] = [$a_ellipse_sec, $a_ellipse_min, $a_ellipse_hour]_GDIPlus_StartUp()
[/autoit] [autoit][/autoit] [autoit]Global $h_stift = _GDIPlus_PenCreate(0xFF000000 + $x_schwarz, 1)
[/autoit] [autoit][/autoit] [autoit]
Global $h_on = _GDIPlus_BrushCreateSolid(0xFF000000 + $x_on)
Global $h_off = _GDIPlus_BrushCreateSolid(0xFF000000 + $x_off)Global $h_GUI = GUICreate("Binäruhr", 600, 480, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP),$WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]
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)Global $h_trans = GUICreate("", @DesktopWidth + 5, @DesktopHeight + 5, -5, -5, $WS_POPUP, $DS_MODALFRAME)
[/autoit] [autoit][/autoit] [autoit]
GUISetBkColor($x_schwarz)
WinSetTrans($h_trans, "", 100)
GUISetCursor(16, 1, $h_trans)GUISetState(@SW_SHOW, $h_trans)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $h_GUI)If $s_type = "scr" Then
[/autoit] [autoit][/autoit] [autoit]
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
EndIfFunc _Binaeruhr_Terminate()
[/autoit] [autoit][/autoit] [autoit]
_GUIFadeInOut($h_GUI, False,
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
EndFuncFunc _Binaeruhr_Update()
[/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($h_UhrzeitDigital) <> @HOUR & ":" & @MIN & ":" & @SEC Then GUICtrlSetData($h_UhrzeitDigital, @HOUR & ":" & @MIN & ":" & @SEC)Local $a_SMH[3] = [@SEC, @MIN, @HOUR]
[/autoit] [autoit][/autoit] [autoit]
Local $b_time, $a_timeFor $x = 0 To 2
[/autoit] [autoit][/autoit] [autoit]
$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
EndFuncFunc _PunkteFuellen($a_array, $a_ellipse)
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _IntegerToBinary($v_number)
[/autoit] [autoit][/autoit] [autoit]
$b_binary = ""
Do
$b_binary = Mod($v_number, 2) & $b_binary
$v_number = Floor($v_number/2)
Until $v_number = 0
Return $b_binary
EndFuncFunc _ArrayElementeTauschen($a_array)
[/autoit] [autoit][/autoit] [autoit]
Local $v_rubbish, $i_uboundIf Mod($a_array[0], 2) = 0 Then
[/autoit] [autoit][/autoit] [autoit]
$i_ubound = ($a_array[0] / 2)
Else
$i_ubound = (($a_array[0] - 1) / 2)
EndIfFor $i = 1 To $i_ubound
[/autoit] [autoit][/autoit] [autoit]
$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
EndFuncFunc _BinaerstringAuffuellen($s_binary, $i_length)
[/autoit] [autoit][/autoit] [autoit]
If StringLen($s_binary) < $i_length Then
Do
$s_binary = "0" & $s_binary
Until StringLen($s_binary) = $i_length
EndIf
Return $s_binary
EndFuncFunc _GUIFadeInOut($hGUI, $bFadeIn = True, $iSpeed = 12) ; by Marsi
[/autoit] [autoit][/autoit] [autoit]
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)
EndFuncFunc _FileGetType($s_path = @ScriptFullPath)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
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 -
danke für den tipp

super...danke...genau daran lag es

-
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>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
;~ #include "Z:\BackUps\AutoIt - Scripts\##Fertig\Background\UDF - Sammlung.au3"
#include <GDIPlus.au3>
#Include <Color.au3>HotKeySet("{ESC}", "_Binaeruhr_Terminate")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Global $x_schwarz = 0x000000, $x_on = 0xF61A00, $x_off = 0xF0F0F0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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]]_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)
[/autoit] [autoit][/autoit] [autoit]
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))Global $h_GUI = GUICreate("Binäruhr", 600, 480, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP),$WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]
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,
GUISetState(@SW_SHOW, $h_GUI)While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(50)
_Binaeruhr_Update()
WEndFunc _Binaeruhr_Terminate()
[/autoit] [autoit][/autoit] [autoit]
;~ _GUIFadeInOut($h_GUI, False,
_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
EndFuncFunc _Punkt($i_on, $i_x, $i_y)
[/autoit] [autoit][/autoit] [autoit]
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)
EndFuncFunc _Binaeruhr_Update()
[/autoit] [autoit][/autoit] [autoit]
If GUICtrlRead($h_UhrzeitDigital) <> @HOUR & ":" & @MIN & ":" & @SEC Then GUICtrlSetData($h_UhrzeitDigital, @HOUR & ":" & @MIN & ":" & @SEC)
Local $b_time = _IntegerToBinary(@SEC)If StringLen($b_time) < 6 Then
[/autoit] [autoit][/autoit] [autoit]
Do
$b_time = "0" & $b_time
Until StringLen($b_time) = 6
EndIfLocal $a_sekunde = StringSplit($b_time, "")
[/autoit] [autoit][/autoit] [autoit]
$a_sekunde = _ArrayElementeTauschen($a_sekunde)For $i = 1 To $a_sekunde[0]
[/autoit] [autoit][/autoit] [autoit]
_Punkt($a_sekunde[$i], $a_ellipse_sec[$i - 1][0], $a_ellipse_sec[$i - 1][1])
Next$b_time = _IntegerToBinary(@MIN)
[/autoit] [autoit][/autoit] [autoit]If StringLen($b_time) < 6 Then
[/autoit] [autoit][/autoit] [autoit]
Do
$b_time = "0" & $b_time
Until StringLen($b_time) = 6
EndIfLocal $a_minute = StringSplit($b_time, "")
[/autoit] [autoit][/autoit] [autoit]
$a_minute = _ArrayElementeTauschen($a_minute)For $i = 1 To $a_minute[0]
[/autoit] [autoit][/autoit] [autoit]
_Punkt($a_minute[$i], $a_ellipse_min[$i - 1][0], $a_ellipse_min[$i - 1][1])
Next$b_time = _IntegerToBinary(@HOUR)
[/autoit] [autoit][/autoit] [autoit]If StringLen($b_time) < 5 Then
[/autoit] [autoit][/autoit] [autoit]
Do
$b_time = "0" & $b_time
Until StringLen($b_time) = 5
EndIfLocal $a_hour = StringSplit($b_time, "")
[/autoit] [autoit][/autoit] [autoit]
$a_hour = _ArrayElementeTauschen($a_hour)For $i = 1 To $a_hour[0]
[/autoit] [autoit][/autoit] [autoit]
_Punkt($a_hour[$i], $a_ellipse_hour[$i - 1][0], $a_ellipse_hour[$i - 1][1])
Next
EndFuncFunc _IntegerToBinary($v_number)
[/autoit] [autoit][/autoit] [autoit]
$b_binary = ""
Do
$b_binary = Mod($v_number, 2) & $b_binary
$v_number = Floor($v_number/2)
Until $v_number = 0
Return $b_binary
EndFuncFunc _ArrayElementeTauschen($a_array)
[/autoit] [autoit][/autoit] [autoit]
Local $v_rubbishIf Mod($a_array[0], 2) = 0 Then
[/autoit] [autoit][/autoit] [autoit][/autoit]
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 -
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)^ ERRORliegt das daran das ich win 7 64 bit verwende oder ist das einfach ein fehler im script?
-
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? 
-
der teil mit
[autoit]Func _ArrayExCompare($aArray1, $aArray2)
[/autoit]
EndFuncist immer noch unverändert

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
[/autoit]
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...unnötig...verwende doch einfach einen switch befehl
[autoit]Switch UBound($aArray, 0)
[/autoit]
Case 1
Case 2
Case 3
Case 4
Case 5
EndSwitchaber ansonsten finde ich die funktionen ganz gut
kann sie gerade nur nicht genau testen da ich keine verwendung dafür habe 
-
$h = handle (zb. $h_gui)
$i = integer
$b = bool
usw. -
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()
[/autoit] [autoit][/autoit] [autoit]
Local $a_drive = DriveGetDrive("ALL")
Local $a_driveondesktop = _GetDriveInkOnDesktop()
Local $f_notfound = True, $s_drivelabel = "", $f_delete = True, $f_nichtidentisch = TrueIf $a_drive[0] > $a_driveondesktop[0] Then
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _GetDriveInkOnDesktop()
[/autoit] [autoit][/autoit] [autoit]
Local $h_search = FileFindFirstFile(@DesktopDir & "\*")
Local $s_inkfiles = "", $a_array[1] = [0]While 1
[/autoit] [autoit][/autoit] [autoit]
$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 & "|"
WEndFileClose($h_search)
[/autoit] [autoit][/autoit] [autoit]If $s_inkfiles = "" Then
[/autoit]
Return $a_array
Else
Return StringSplit(StringTrimRight($s_inkfiles, 1), "|")
EndIf
EndFunc -
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

-
mit @error fragst du hier die msgbox ab und nicht das pingen

du fragst ab ob es beim erstellen der msgbox zu fehlern gekommen ist
-
probiers mal mit
[autoit]If 0 == "" Then
[/autoit]
MsgBox(0, "", "gleich")
EndIf -
Das "Rechtsklickmenü" nennt sich Kontextmenü.
ja ich mir ist der name nicht dafür eingefallen
aber offenbar wussten ja alle was gemeint war 
$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??
Alles anzeigenHi,
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).
gut zu wissen
allerdings habe ich mit "$CMDLINE[]" noch nie gearbeitet und weiß auch nicht wie das geht 
-
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? 
-
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 