Ich befürchte, mit AutoIt-Mitteln gar nicht.
AutoIt kann nicht mehrere Prozesse parallel laufen lassen. Es wird alles nacheinander abgearbeitet. Also Kopiervorgang wird gestartet und erst wenn er vorbei ist, kannst du eine neue Aktion starten.
Ich hatte es bisher nicht gefunden, aber vielleicht läßt sich doch irgendwie vorher die 'Eieruhr' starten und am Ende des Vorgangs wieder schließen.
Beiträge von BugFix
-
-
-
\off topic
Dein Avatar gefällt mir: "Meister der idiotischen Kommentare"
-
Hi,
Feiertagsberechnung hatte ich schon mal gemacht. Findest du auch bei den Skripten. Hier nochmal die Funktion:Spoiler anzeigen
[autoit];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[/autoit] [autoit][/autoit] [autoit]
; Funktion _Feiertage($Jahr)
;
; gibt die Feiertage des übergebenen Jahres
; als sortiertes Array[TT.MM.JJJJ \ Feiertag] zurück
; (Trennzeichen veränderbar über Variable: $Delimiter)
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#include <math.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <Date.au3>
#include <Array.au3>Func _Feiertage($year)
[/autoit] [autoit][/autoit] [autoit]
Dim $4AdvDat, $3AdvDat, $2AdvDat, $1AdvDat, $TotSoDat, $BuBDat, $MutterDat, $ErnteDat, $tmp, $Delimiter = "\"
Dim $HDays[32]
;fixe Feiertage
$HDays[0] = $year & "/01/01" & $Delimiter & "Neujahr"
$HDays[1] = $year & "/01/06" & $Delimiter & "Heilige Drei Könige"
$HDays[2] = $year & "/02/14" & $Delimiter & "Valentinstag"
$HDays[3] = $year & "/05/01" & $Delimiter & "Maifeiertag"
$HDays[4] = $year & "/10/03" & $Delimiter & "Tag der Deutschen Einheit"
$HDays[5] = $year & "/10/31" & $Delimiter & "Reformationstag"
$HDays[6] = $year & "/11/01" & $Delimiter & "Allerheiligen"
$HDays[7] = $year & "/12/24" & $Delimiter & "Heiligabend"
$HDays[8] = $year & "/12/25" & $Delimiter & "1. Weihnachtsfeiertag"
$HDays[9] = $year & "/12/26" & $Delimiter & "2. Weihnachtsfeiertag"
$HDays[10] = $year & "/12/31" & $Delimiter & "Silvester";variable Feiertage
[/autoit]
$aa = Mod($year, 19)
$bb = Mod($year, 4)
$cc = Mod($year, 7)
$H1 = Int($year / 100)
$H2 = Int($year / 400)
$N = 4 + $H1 - $H2
$MM = 15 + $H1 - $H2 - _Floor (Int((8 * $H1 + 13) / 25))
$dd = Mod((19 * $aa + $MM), 30)
$ee = Mod((2 * $bb + 4 * $cc + 6 * $dd + $N), 7)
If $dd + $ee = 35 Then
$Easter = 50
Else
If $dd = 28 And $ee = 6 And $aa > 10 Then
$Easter = 49
Else
$Easter = 22 + $dd + $ee
EndIf
EndIf
If $Easter < 32 Then
$EasterDay = $Easter
$EasterMonth = "03"
Else
$EasterDay = $Easter - 31
$EasterMonth = "04"
EndIf
If $EasterDay < 10 Then
$EasterDay = "0" & $EasterDay
EndIf
If $year < 1900 Then ;Datumsoperationen nur mgl. wenn > 1900 , Jahr wird konvertiert
$RestJahr = Mod($year, 100)
If _DateIsLeapYear($year) Then
If $RestJahr < 10 Then
$RestJahr = "0" & $RestJahr
EndIf
$Tempyear = 20 & $RestJahr
Else
If $RestJahr < 10 Then
$RestJahr = "0" & $RestJahr
EndIf
$Tempyear = 19 & $RestJahr
EndIf
$EasterDate = $Tempyear & "/" & $EasterMonth & "/" & $EasterDay
Else
$EasterDate = $year & "/" & $EasterMonth & "/" & $EasterDay
EndIf
$WFastDate = _DateAdd( 'd', -52, $EasterDate)
$RosDat = _DateAdd( 'd', -48, $EasterDate)
$FastDat = _DateAdd( 'd', -47, $EasterDate)
$AschDat = _DateAdd( 'd', -46, $EasterDate)
$GrDoDat = _DateAdd( 'd', -3, $EasterDate)
$KarDat = _DateAdd( 'd', -2, $EasterDate)
$OSaDat = _DateAdd( 'd', -1, $EasterDate)
$OSoDat = $EasterDate
$OMoDat = _DateAdd( 'd', 1, $EasterDate)
$HiFaDat = _DateAdd( 'd', 39, $EasterDate)
$PfSoDat = _DateAdd( 'd', 49, $EasterDate)
$PfMoDat = _DateAdd( 'd', 50, $EasterDate)
$FroDat = _DateAdd( 'd', 60, $EasterDate)
;Ermitteln nicht von Ostern abhängiger, veränderlicher Feiertage
;Muttertag = 2. Sonntag im Mai ABER wenn Pfingsten = 2.Sonntag im Mai dann ist Muttertag am 1. Sonntag
;Der 2. Sonntag kann nur zw. dem 8. u. 14.5. liegen
For $maitag = 8 To 14
If _DateToDayOfWeek($year, 5, $maitag) = 1 Then
If $maitag < 10 Then
$maitag = "0" & $maitag
EndIf
$MutterDat = $year & "/05/" & $maitag
If $MutterDat = $PfSoDat Then
$MutterDat = _DateAdd( 'd', -7, $year & "/05/" & $maitag)
EndIf
ExitLoop
EndIf
Next
;Erntedankfest 1. Sonntag im Oktober (zw. 1. u. 7.10.)
For $oktobertag = 1 To 7
If _DateToDayOfWeek($year, 10, $oktobertag) = 1 Then
$oktobertag = "0" & $oktobertag
$ErnteDat = $year & "/10/" & $oktobertag
ExitLoop
EndIf
Next
;4.Advent = Sonntag vor 25.12. (zw. 18. u. 24.12.)
For $deztag = 18 To 24
If _DateToDayOfWeek($year, 12, $deztag) = 1 Then
$4AdvDat = $year & "/12/" & $deztag
$3AdvDat = _DateAdd( 'd', -7, $4AdvDat)
$2AdvDat = _DateAdd( 'd', -14, $4AdvDat)
$1AdvDat = _DateAdd( 'd', -21, $4AdvDat)
$TotSoDat = _DateAdd( 'd', -28, $4AdvDat)
$BuBDat = _DateAdd( 'd', -32, $4AdvDat)
ExitLoop
EndIf
Next
$HDays[11] = $WFastDate & $Delimiter & "Weiberfastnacht"
$HDays[12] = $RosDat & $Delimiter & "Rosenmontag"
$HDays[13] = $FastDat & $Delimiter & "Fastnacht"
$HDays[14] = $AschDat & $Delimiter & "Aschermittwoch"
$HDays[15] = $GrDoDat & $Delimiter & "Gründonnerstag"
$HDays[16] = $KarDat & $Delimiter & "Karfreitag"
$HDays[17] = $OSaDat & $Delimiter & "Ostersamstag"
$HDays[18] = $OSoDat & $Delimiter & "Ostersonntag"
$HDays[19] = $OMoDat & $Delimiter & "Ostermontag"
$HDays[20] = $HiFaDat & $Delimiter & "Christi Himmelfahrt"
$HDays[21] = $PfSoDat & $Delimiter & "Pfingstsonntag"
$HDays[22] = $PfMoDat & $Delimiter & "Pfingstmontag"
$HDays[23] = $MutterDat & $Delimiter & "Muttertag"
$HDays[24] = $FroDat & $Delimiter & "Fronleichnam"
$HDays[25] = $ErnteDat & $Delimiter & "Erntedankfest"
$HDays[26] = $BuBDat & $Delimiter & "Buß- und Bettag"
$HDays[27] = $TotSoDat & $Delimiter & "Totensonntag"
$HDays[28] = $1AdvDat & $Delimiter & "1. Advent"
$HDays[29] = $2AdvDat & $Delimiter & "2. Advent"
$HDays[30] = $3AdvDat & $Delimiter & "3. Advent"
$HDays[31] = $4AdvDat & $Delimiter & "4. Advent"
_ArraySort($HDays)
;Datum konvertieren zu TT.MM.JJJJ
For $i = 0 To 31
$tmp = StringSplit($HDays[$i], $Delimiter)
$HDays[$i] = StringMid($tmp[1], 9) & "." & StringMid($tmp[1], 6, 2) & "." & StringMid($tmp[1], 1, 4) & $Delimiter & $tmp[2]
Next
Return $HDays
EndFunc ;==>_Feiertage -
Als erstes empfehle ich dir, nicht den Umweg über die TXT-Datei zu gehen, sondern beim Zusammenstellen der Daten im Überwachungsscript die Daten gleich in ein Array zu speichern um sie dann von dort in Excel zu übertragen.
Erstelle zuerst (kannst du per Hand machen) ein Exceldokument mit einem Sheet für jeden Server. Falls die Servernamen wechseln, solltest du das automatisieren.
Wenn deine Daten zusammengestellt sind:
- Exceldokument öffnen ( _ExcelBookOpen($sFilePath, $fVisible = 1, $fReadOnly = False) )
- benötigten Sheet aktivieren ( _ExcelSheetActivate($oExcel, $vSheet) )
- Daten eintragen ( _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow, $iColumn = 1) )
du kannst ja, z.B. in A1 hinterlegen, welche Zelle zuletzt beschrieben wurde und dies vor dem neuen Schreibvorgang auslesen ( _ExcelReadCell($oExcel, $sRangeOrRow, $iColumn = 1) ) um die Addressierung vorzunehmen
- Exceldokument speichern ( _ExcelBookSave($oExcel, $fAlerts = 0) )
- Exceldokument schließen ( _ExcelBookClose($oExcel, $fSave = 1, $fAlerts = 0) ) -
-
Prüf doch mal mit WinGetHandle( ) ob es wirklich nur ein Fenster ist, das umgabaut wird oder nicht doch unterschiedliche Fenster gleichen Titels.
-
Schau dir mal die Funktion Assign( ) an.
Oder deklariere ein ausreichend großes Array für die Controls. -
Geraten: Wer ist wo? - Datenbankdatei
-
Oder um die Funktion Eval zu verdeutlichen:
Eval() baut aus einem String den Variablennamen auf und zwar aus jedem einzelnen Zeichen:
[autoit]$Variable = 10
[/autoit]
$outEval = Eval("V"&"a"&"r"&"i"&"a"&"b"&"l"&"e")
MsgBox(0,"",$outEval) ; zeigt 10Geht nicht mit Arraynamen!
-
Wenn du mit Funktionen arbeitest, die weder in der Prod noch in der Beta enthalten sind, dann solltest du sie in deinem Code anführen oder zumindest drauf verlinken (was ich hiermit tue: Lazycat's RTF Plugin).
Eine Kristallkugel haben schließlich die wenigsten von uns.
Zum Problem selber, da schau ich nochmal.Kurze Antwort:
Dieses Control kannst du nicht in ein Tab einbetten. -
Zitat
Ich denke, dass die Funktion (die sich übrigends FileInstall() nennt) für deine Verwendungszwecke besser geeignet ist.....
Und falls es mal ein paar Dateien mehr sind, kannst du dir das Script auch automatisch mit dem Install-Script-Generator erstellen lassen. -
Guckst du hier auch: Dateien / Ordner rekursiv lesen

-
Als grundsätzlichen Tipp mal überlegen, generell 'OnEventMode' zu verwenden. Da treten solche Probleme nicht auf.
-
Oder, wenn du das Kopier-Avi dabei haben möchtest:
Spoiler anzeigen
[autoit]#include <guiconstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $arFiles[100] ; zu kopierende Dateien
For $i = 0 To 99
$arFiles[$i] = "Datei " & $i ; nur als Muster
Next
$Form1 = GUICreate("Kopieren von Dateien . . .", 343, 194, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST)
$n1=GUICtrlCreateAvi (@SystemDir & "\shell32.dll",160, 40,20)
GUICtrlSetState ($n1, 1)
$Label = GUICtrlCreateLabel("", 70, 93, 203, 17, $SS_CENTER)
$status = GUICtrlCreateProgress(20, 120, 303, 17 ,$PBS_SMOOTH)
GUISetState()While 1
[/autoit]
Sleep(100)
For $i = 0 To UBound($arFiles)-1
;Kopieren.. FileCopy( )
GUICtrlSetData($Label, $arFiles[$i])
GUICtrlSetData($status, Round(100/UBound($arFiles)*$i))
Sleep(50)
Next
Exit
WEnd
Kannst du natürlich noch um die Anzeige der Prozentzahl erweitern. -
Eh du selbst was schreibst, probier doch mal ob der Router mit dem Barricade-Monitor von FRIFA (Barricade-Monitor 6.2.0.4) zusammenarbeitet. Da hast du schon alle Optionen dabei. Ist mit vielen Routern kompatibel.
-
Erstelle eine kleine GUI: 'bin beschäftigt'
[autoit]
setze sie auf @GUI_SHOW während des Sicherungsvorgangs und danach auf @GUI_HIDE$Busy = GUICreate("",160,110,-1,-1,$WS_POPUP)
[/autoit]
GUISetBkColor(0x708090)
$label_busy = GUICtrlCreateLabel("Einen Moment bitte." & @LF & @LF & "Die Sicherung läuft...", 20, 15, 120, 100, $SS_CENTER)
GUICtrlSetFont(-1, 10, Default,2)
GUICtrlSetColor(-1, 0xF0E68C) -
Zitat
wenn der mehrere tasten trücken soll in bestimmten zeit abständen
Gib mal Bsp.
Verstehe nicht genau, was du möchtest.
- mehrere Tasten nacheinander?
- oder gleichzeitig?
- zur gleichen Farge?
- oder zu anderer Farbe? -
[autoit]
HotKeySet("^e", "Ende") ; Beenden mit STRG+e
[/autoit]
While 1
If PixelGetColor(475,24) <> 0xFFFFFF Then
Sleep(100)
Send("8")
Sleep(5000)
Send("2")
EndIf
WEnd
Func Ende()
Exit
EndFunc -
So, nun brauchst du nur noch für die User-Nummern anpassen:
EDIT
Ich hab den Code nochmal etwas 'gesäubert'. Einiges war ja nur zur Demo:Spoiler anzeigen
[autoit]#include <string.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $arUser, $string = "admin:99:*user:1:*user:12:*user:3:*user:4:*user:5:*"$arUser = StringSplit($string, "*")
[/autoit]
If Not IsArray($arUser) Then
MsgBox(16, "Fehler", "Userlist ist leer")
Else
Dim $arUserList[$arUser[0]-1]
MsgBox(0, '', $arUser[0]-1 & " User sind online")
For $i = 1 To $arUser[0]-1 ; da auch am Ende des Strings ein Trennzeichen ist, folgt noch ein leerer String
$var = StringTrimRight($arUser[$i], 1) & ")"
$arUserList[$i-1] = StringReplace($var, ":", "(")
Next
For $i = 0 To UBound($arUserList)-1
$var = _StringBetween($arUserList[$i], "(", ")")
Switch $var[0]
Case 4
; code für User 4
Case 12
; code für User 12
; etc.
EndSwitch
Next
EndIfWenn du die Bezeichnungen (admin, user) gar nicht auswertest, sondern nur die Werte zwischen den ":" kannst du das noch mehr schrumpfen:
Spoiler anzeigen
[autoit]#include <string.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $arUser, $string = "admin:99:*user:1:*user:12:*user:3:*user:4:*user:5:*"$arUser = StringSplit($string, "*")
[/autoit]
If Not IsArray($arUser) Then
MsgBox(16, "Fehler", "Userlist ist leer")
Else
MsgBox(0, '', $arUser[0]-1 & " User sind online")
For $i = 1 To $arUser[0]-1
$var = _StringBetween($arUser[$i], ":", ":")
Switch $var[0]
Case 4
; code für User 4
Case 12
; code für User 12
; etc.
EndSwitch
Next
EndIf