Hi Leute,
ich suche eine Möglichkeit ein Liniendiagramm in AutoIT zu erstellen, bei dem der y Wert in einer Array gespeichert ist und der x Wert immer regelmäßig aufsteigend ist (0,1,2,3 etc...)
Ich habe ein paar Scripte gefunden, aber entweder waren diese für ein Balkendiagramm oder haben überhaupt gar nicht funktioniert.
Ich wollte euch deshalb fragen, ob ihr eine Möglichkeit kennt das zu realisieren
Fliwatt
Beiträge von Fliwatt
-
-
Hi Alcros,
ich bin gerade dabei meinen gesamten Script nach dem Schema umzuschreiben,
trotzdem nochmal zwei Fragen:
1.Wieso setzt du die if Argumente in Klammern?
2.Ist das in Zeile 8 Absicht, dass du ein Then weggelassen hast?
Mfg Fliwatt -
Hi Bugfix,
erstmal danke für deine Antwort,
mein Problem ist nur, dass die ComboBox auch entsprechend der Variablen änderbar seien muss und das ist mit der Textdatei nur schwer realisierbar.
Zum Beispiel wenn $PoAInstalled = 3 ist dann soll nur der Eintrag "Alle Kapitel" erscheinen und weiterhin soll dann der Button von "Installieren" auf "Aktivieren" geschaltet werden können.
Mfg Fliwatt -
Hi Leute,
ich arbeite im Moment an einem kleinen Projekt für mich, deshalb ist der Code auch so unsauber und dort habe ich ein komisches Verhalten festgestellt.
Ich habe verschiedene ComboBoxen und je nachdem welche ich auswähle ändert sich die zweite ComboBox, dabei ist mir etwas aufgefallen:
Wenn ich in dem Programm "Days of Ahoul" auswähle, dann nimmt er den Inhalt von "Pillars of Avalon". Dann habe ich erstmal alles auf die ComboBoxen geschoben und habe die Elemente bei jeder Änderung löschen und neu erstellen lassen. Als das auch nichts half habe ich einfach mal Debug "Console Writes" erstellt und siehe da:
Oben steht ja if $SelectedItem = 2 Then ConsoleWrite(blablabla), aber das trifft nie ein. Das heißt eigentlich müsste ja dann unten in dem if Befehl die Schleife durch Days of Ahoul durchgehen, tut sie aber nicht.
Dann ist mir noch weiterhin aufgefallen, dass wenn ich von "Siege of Avalon" die Maus ohne "Pillars of Avalon" zu berühren direkt auf "Days of Ahoul" schiebe, das Programm "Days of Ahoul" erkennt.
Wieso ist mir schleierhaft, vieleicht könnt ihr mir helfenSpoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$SelectedItem = 0
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; $BackupPath = IniRead("ModToolConfig.ini","main","BackupPath",@ScriptDir & "\BackupFiles")
;$PoAInstalled = IniRead("ModToolConfig.ini","mods","PoAInstalled","error")
; $DoAInstalled = IniRead("ModToolConfig.ini","mods","DoAInstalled","error")
;$ActivatedGame = IniRead("ModToolConfig.ini","mods","ActivatedGame","error")
$PoAInstalled = 0
$DoAInstalled = 0
ConsoleWrite($BackupPath & @CRLF & $PoAInstalled & @CRLF & $DoAInstalled & @CRLF & $ActivatedGame & @CRLF)
;If $PoAInstalled = "error" or $DoAInstalled = "error" or $ActivatedGame = "error" Then
; MsgBox(16,"SoA Mod Tool","ERROR, ini konnte nicht gelesen werden")
; Exit
;EndIf
#Region ### START Koda GUI section ### Form=D:\Extras\Programmieren\AUTOIT\Koda Forms\SoA Mod Tool.kxf
Global $Form_main1 = GUICreate("SoA Mod Tool", 679, 63, 238, 140)
Global $Combo_main1 = GUICtrlCreateCombo("Siege of Avalon", 0, 24, 209, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,"Pillars of Avalon|Days of Ahoul","")
$Label_main1 = GUICtrlCreateLabel("Spiel auswählen", 56, 0, 119, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Label_main2 = GUICtrlCreateLabel("Kapitel auswählen", 264, 0, 132, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
Global $Combo_main2 = GUICtrlCreateCombo("Bitte wählen", 224, 24, 209, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetState(-1, $GUI_DISABLE)
$Button_main1 = GUICtrlCreateButton("Installieren", 440, 24, 233, 33)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit]
;ConsoleWrite(GUICtrlRead($Combo_main1))
If $SelectedItem = 2 Then
ConsoleWrite($SelectedItem & @CRLF)
EndIf
If GUICtrlRead($Combo_main1) = 'Pillars of Avalon' and Not $SelectedItem = 1 Then
ConsoleWrite("Pillars of Avalon" & @CRLF)
GUICtrlSetState($Combo_main2,$GUI_ENABLE)
If $PoAInstalled = 0 or $PoAInstalled = 1 Then
GUICtrlDelete($Combo_main2)
$Combo_main2 = GUICtrlCreateCombo("Kapitel 1", 224, 24, 209, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,"Kapitel 2|Kapitel 3|Alle Kapitel")
ElseIf $PoAInstalled = 2 Then
GUICtrlDelete($Combo_main2)
$Combo_main2 = GUICtrlCreateCombo("Kapitel 1+2", 224, 24, 209, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,"Kapitel 3")
ElseIf $PoAInstalled = 3 Then
GUICtrlDelete($Combo_main2)
$Combo_main2 = GUICtrlCreateCombo("Alle Kapitel", 224, 24, 209, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
Else
MsgBox(16,"SoA Mod Tool","Ungültiger Install-Wert(hör auf an der ini rumzufummeln!")
EndIf
$SelectedItem = 1
ElseIf GUICtrlRead($Combo_main1) = 'Days of Ahoul' and Not $SelectedItem = 2 Then
ConsoleWrite("Days of Ahoul" & @CRLF)
$SelectedItem = 2
GUICtrlSetState($Combo_main2,$GUI_ENABLE)
If $DoAInstalled = 0 or $DoAInstalled = 1 Then
GUICtrlDelete($Combo_main2)
$Combo_main2 = GUICtrlCreateCombo("Kapitel 1", 224, 24, 209, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,"Kapitel 2|Alle Kapitel")
ElseIf $DoAInstalled = 2 Then
GUICtrlDelete($Combo_main2)
$Combo_main2 = GUICtrlCreateCombo("Alle Kapitel", 224, 24, 209, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
Endif
ElseIf GuiCtrlRead($Combo_main1) = 'Siege of Avalon' and not $SelectedItem = 0 Then
ConsoleWrite("Siege of Avalon" & @CRLF)
$SelectedItem = 0
GUICtrlSetState($Combo_main2,$GUI_DISABLE)
GUICtrlSetState($Button_main1,$GUI_ENABLE)
GUICtrlSetData($Button_main1,"Aktivieren")EndIf
[/autoit]
WEnd
Mfg Fliwatt -
Dankeschön, soweit ich es sehe kann, geht es schon einmal.
Ich meld mich, falls ich noch einmal Probleme bekomme
Mfg Fliwatt -
Hi Leute,
ich habe vor kurzem eine UDF geschrieben, mit der man einen Ordner mit Unterordner in einen anderen kopieren kann, welches aber vorher die MD5 Checksums checkt und wenn sie gleich sind die Datei überspringt, wenn sie aber verschieden sind die Original Datei in einem externen Ordner "backupt" und dann überschreibt.
Mein Script hat keinen Syntaxfehler, aber es werden anscheinend Dateien übersprungen.
Ich habe den Script schon mehrmals durchgesehen, habe aber keine Ahnung woran es liegen könnte.
Ich benutze zum Ordnerauflisten die UDF von AutoIt.de User Tweaky, ich habe sie mit Region Tags markiert.
Vieleicht findet ihr den Fehler, ich habe es auch schon mit Debug versucht und schon DebugConsoleWrite's erstellt um Tweakys UDF zu testen, mir ist aber nichts aufgefallen
Bei einem Versuch hat das Script erst ewig gerödelt, aber am Ende hat er gar nichts kopiert, geschweige denn Backups erstellt.
Mfg FliwattSpoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#region Rekursive Ordnerauflistung Funktion
#include <Array.au3>
#include <File.au3>
#include <Crypt.au3>;*******************************************************************************************************************************************************************************************************************************************
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; Funktion _ordner_rekursiv($udf_quellordner[, $udf_Ordner_Dateien[, $udf_unterordner=True[, $udf_spalte_datum=False[, $udf_dateityp = "*"[, $udf_auslassen = ""]]]]])
; Beschreibung ermittelt alle Dateien/Ordner des angegebenen Verzeichnisses
; Parameter $udf_quellordner: der zu durchsuchende Ordner (Angabe: einzelner Ordner als String oder mehrere Ordner im Array beginnend bei 1)
; optional $udf_Ordner_Dateien: 1 = Dateien auflisten (Standard) 2 = Ordner auflisten
; optional $udf_unterordner: True = Unterordner miteinbeziehen (Standard) False = Unterordner nicht miteinbeziehen
; optional $udf_spalte_datum: True = Änderungsdatum der Datei ermitteln False = Änderungsdatum der Datei nicht ermitteln (Standard)
; optional $udf_dateityp: einzuschließende Dateitypen (mehrere Typen durch | trennen) "*" >>> alle (Standard)
; optional $udf_auslassen: Wörter, die im Pfad oder Dateinamen vorkommen, auslassen (mehrere durch | trennen) "" <<< Standard
; Rückgabewert Erfolg: Gibt ein Array mit 3 Spalten zurück (Dateiname, Dateipfad, Änderungsdatum)
; Fehler: 0 setzt @error
; @error = 1 mindestens 1 Pfad existiert nicht
; Autor Tweaky (http://www.autoit.de)
;*******************************************************************************************************************************************************************************************************************************************;********************************************
[/autoit] [autoit][/autoit] [autoit]
; Ordner rekursiv (Hauptfunktion) *
;********************************************Func _ordner_rekursiv($udf_quellordner, $udf_Ordner_Dateien = 1, $udf_unterordner = True, $udf_spalte_datum = False, $udf_dateityp = "*", $udf_auslassen = "")
[/autoit] [autoit][/autoit] [autoit]
Local $verzeichnisse_alle[1] ;Array für die Ordner
Local $array_alles[1000000][3] ;Array für die Ordner und Dateien
Local $szDrive, $szDir, $szFName, $szExtIf Not IsArray($udf_quellordner) Then ;Falls der Quellordner kein Array ist, ein Array erstellen
[/autoit] [autoit][/autoit] [autoit]
$udf_quellordner_tmp = $udf_quellordner
Dim $udf_quellordner[2]
$udf_quellordner[0] = 1
$udf_quellordner[1] = $udf_quellordner_tmp
EndIfFor $i = 1 To UBound($udf_quellordner) - 1
[/autoit] [autoit][/autoit] [autoit]
If Not FileExists($udf_quellordner[$i]) Or Not StringInStr($udf_quellordner[$i], ":") Then
SetError(1) ;mindestens 1 Pfad existiert nicht
Return 0
EndIfIf StringRight($udf_quellordner[$i], 1) <> "\" Then $udf_quellordner[$i] &= "\"
[/autoit] [autoit][/autoit] [autoit]$udf_quellordner_einzeln = $udf_quellordner[$i]
[/autoit] [autoit][/autoit] [autoit]If $udf_unterordner = True Then ;mit Unterordner
[/autoit] [autoit][/autoit] [autoit]
_ordner_rekursiv_mit_unterordner($udf_quellordner_einzeln, $verzeichnisse_alle)
_ArrayAdd($verzeichnisse_alle, $udf_quellordner_einzeln)
Else ;ohne Unterordner
$verzeichnisse_alle = $udf_quellordner
EndIf
NextIf IsArray($verzeichnisse_alle) Then $verzeichnisse_alle[0] = UBound($verzeichnisse_alle) - 1 ;In die erste Zeile die Anzahl der Dateien schreiben
[/autoit] [autoit][/autoit] [autoit]$zaehler_fortlaufend = 0
[/autoit] [autoit][/autoit] [autoit]If $udf_Ordner_Dateien = 1 Then ;Dateien auflisten
[/autoit] [autoit][/autoit] [autoit]If Not IsArray($verzeichnisse_alle) Then
[/autoit] [autoit][/autoit] [autoit]
$verzeichnisse_alle_tmp = $verzeichnisse_alle
Local $verzeichnisse_alle[2] ;Array für die Ordner
$verzeichnisse_alle[1] = $verzeichnisse_alle_tmp
EndIfFor $u = 1 To UBound($verzeichnisse_alle) - 1
[/autoit] [autoit][/autoit] [autoit]
$array_alle_dateien = _FileListToArray($verzeichnisse_alle[$u], "*", 1)For $k = 1 To UBound($array_alle_dateien) - 1
[/autoit] [autoit][/autoit] [autoit]
$kriterien_ok = 0If $udf_dateityp = "*" Then ;Dateityp nicht angegeben oder alle Dateien
[/autoit] [autoit][/autoit] [autoit]
$kriterien_ok = 1
Else ;1 oder mehrere Dateitypen angegeben
$dateityp_split = StringSplit($udf_dateityp, "|")
$udf_dateiendung_array = _PathSplit($array_alle_dateien[$k], $szDrive, $szDir, $szFName, $szExt)
$udf_dateiendung = $udf_dateiendung_array[4]
For $i = 1 To UBound($dateityp_split) - 1
If "." & $dateityp_split[$i] = StringRight($array_alle_dateien[$k], StringLen($udf_dateiendung)) Then
$kriterien_ok = 1
ExitLoop
EndIf
Next
EndIfIf $udf_auslassen <> "" Then ;Wörter in dem Pfad und Datei auslassen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$auslassen_split = StringSplit($udf_auslassen, "|")
For $i = 1 To UBound($auslassen_split) - 1
If StringInStr($array_alle_dateien[$k], $auslassen_split[$i]) Or StringInStr($verzeichnisse_alle[$u], $auslassen_split[$i]) Then
$kriterien_ok = 0
ExitLoop
EndIf
Next
EndIf;Papierkorb und System Volume Information wird nicht aufgelistet
[/autoit] [autoit][/autoit] [autoit]
If StringInStr($array_alle_dateien[$k], 'RECYCLER') Or StringInStr($verzeichnisse_alle[$u], 'RECYCLER') _
Or StringInStr($array_alle_dateien[$k], 'RECYCLED') Or StringInStr($verzeichnisse_alle[$u], 'RECYCLED') _
Or StringInStr($array_alle_dateien[$k], 'System Volume Information') Or StringInStr($verzeichnisse_alle[$u], 'System Volume Information') _
Or StringInStr($array_alle_dateien[$k], '$RECYCLE.BIN') Or StringInStr($verzeichnisse_alle[$u], '$RECYCLE.BIN') Then
$kriterien_ok = 0
ExitLoop
EndIf;wenn der Dateityp passt und die Datei bzw. der Ordner nicht ausgelassen werden soll
[/autoit] [autoit][/autoit] [autoit]
If $kriterien_ok = 1 Then
$zaehler_fortlaufend += 1
$array_alles[$zaehler_fortlaufend][0] = $verzeichnisse_alle[$u]
$array_alles[$zaehler_fortlaufend][1] = $array_alle_dateien[$k]
If $udf_spalte_datum = True Then $array_alles[$zaehler_fortlaufend][2] = FileGetTime($verzeichnisse_alle[$u] & $array_alle_dateien[$k], 0, 1)
EndIf
Next
NextElse ;Ordner auflisten
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To UBound($verzeichnisse_alle) - 1
$kriterien_ok = 1;Papierkorb und System Volume Information wird nicht aufgelistet
[/autoit] [autoit][/autoit] [autoit]
If StringInStr($verzeichnisse_alle[$i], 'RECYCLER') Or StringInStr($verzeichnisse_alle[$i], 'RECYCLED') _
Or StringInStr($verzeichnisse_alle[$i], 'System Volume Information') Or StringInStr($verzeichnisse_alle[$i], '$RECYCLE.BIN') Then
$kriterien_ok = 0
ExitLoop
EndIfIf $kriterien_ok = 1 Then
[/autoit] [autoit][/autoit] [autoit]
$zaehler_fortlaufend += 1
$array_alles[$zaehler_fortlaufend][0] = $verzeichnisse_alle[$i]
EndIf
Next
EndIf;Leere Zeilen am Ende löschen
[/autoit] [autoit][/autoit] [autoit]
ReDim $array_alles[$zaehler_fortlaufend + 1][3];In die erste Zeile die Anzahl der Dateien schreiben
[/autoit] [autoit][/autoit] [autoit]
If IsArray($array_alles) Then $array_alles[0][0] = UBound($array_alles) - 1$verzeichnisse_alle = 0 ;Array löschen
[/autoit] [autoit][/autoit] [autoit]Return $array_alles ;Array zurückgeben
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_ordner_rekursiv;**************************************
[/autoit] [autoit][/autoit] [autoit]
; Unterordner durchsuchen *
;**************************************Func _ordner_rekursiv_mit_unterordner($udf_quellordner, ByRef $verzeichnisse_alle)
[/autoit] [autoit][/autoit] [autoit]
$verzeichnisse = _FileListToArray($udf_quellordner, "*", 2)For $i = 1 To UBound($verzeichnisse) - 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
$verzeichnisse[$i] = $udf_quellordner & $verzeichnisse[$i] & "\"
_ArrayAdd($verzeichnisse_alle, $verzeichnisse[$i])
_ordner_rekursiv_mit_unterordner($verzeichnisse[$i], $verzeichnisse_alle)
Next
EndFunc ;==>_ordner_rekursiv_mit_unterordner
#endregion Rekursive Ordnerauflistung Funktion
Func _DirCopyBackup($sSource,$sTarget,$sBackupFolder)
_Crypt_Startup()
Local $iCounterDirCopyBackup = 1
Local $iCounterDirCopyBackup2 = 1
Local $fFound = 0
Local $aSourceRekursiv = _ordner_rekursiv($sSource)
Local $aTargetRekursiv = _ordner_rekursiv($sTarget)
For $iCounterDirCopyBackup = 1 To Ubound($aSourceRekursiv)-1
For $iCounterDirCopyBackup2 = 1 To Ubound($aTargetRekursiv)-1
If StringTrimLeft($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1],StringLen($sSource)) = StringTrimLeft($aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1],StringLen($sTarget)) Then
If Not _Crypt_HashFile($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1],$CALG_MD5) = _Crypt_HashFile($aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1], $CALG_MD5) Then
FileCopy($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1],$sBackupFolder & StringTrimLeft($aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1],StringLen($sTarget)),9)
FileCopy($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1],$aTargetRekursiv[$iCounterDirCopyBackup2][0] & $aTargetRekursiv[$iCounterDirCopyBackup2][1],1)
$fFound = 1
Else
$fFound = 1
EndIf
Endif
Next
If $fFound = 0 Then
FileCopy($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1],$sTarget & StringTrimLeft($aSourceRekursiv[$iCounterDirCopyBackup][0] & $aSourceRekursiv[$iCounterDirCopyBackup][1],StringLen($sSource)),9)
Else
Local $fFound = 0
EndIf
Next
Return $aSourceRekursiv[0][0]
_Crypt_Shutdown()
EndFunc
MsgBox(0,"",_DirCopyBackup(FileSelectFolder("Source",""),FileSelectFolder("Target",""),FileSelectFolder("Backup",""))) ;Nur zum Test der meines Scriptes, nicht notwendig zum Ausführen.
Exit
PS _DirCopyBackup(ab z.163) ist meine Funktion, der Rest ist von Tweaky -
Nochmal zum einfachen Verständnis:
[autoit]
Du öffnest die Autoit Windows Info, wenn du Win7 hast, einfach in der Suche Window Info eingeben und starten.
In dem Programm klickst du das Fadenkreuz im Finder Tool an, hälst gedrückt und bewegst das Ding auf den anzuklickenden Button, sodass dieser umrandet ist.
Dann liest du die Infos ein und überträgst sie in diesen Scriptschnipsel:
[/autoit]
ControlClick("Title","ggf. Text","[CLASS:Button; INSTANCE:1]")
Im ersten Eintrag gibst du den Fenster Titel ein, kannst du unter der Kategorie "Title" einlesen (auf richtige GROSS, klein und Rächtschriebung Schreibung achten)
Bei dem 2ten kannst du, wenn du willst noch ein bischen aus dem Fenster eingeben, auch hier (auf richtige GROSS, klein und Rächtschriebung Schreibung achten)
der 3.Eintrag ist der wichtige, erstmal bei dem Eintrag Class aus Autoit Window Info auslesen, (auf richtige GROSS, klein und Rächtschriebung Schreibung achten)
bei dem 4.ten aus dem Eintrag Instance, die Zahl hinter INSTANCE einsetzenDass sollte es entsprechend anklicken, bei manchen Programmen geht das nicht, musst du mal probieren.
Mfg FliwattEDIT: Das mit
Zitatauf richtige GROSS, klein und Rächtschriebung Schreibung achten)
ist nicht ernstgemeint, nur für die Dumpfbacken, die das nicht verstehen
-
So, jetzt reicht es mir hier.
Ich werde das Projekt jetzt alleine übernehmen, ich wollte nur HIlfe von jemandem , der vieleicht ein bischen Freizeit hat, damit ich an einem anderen Teil des Programmes weiterarbeiten kann und dafür ist dieses Forum ja auch da. Ich habe auch geschrieben, dass es wahrscheinlich jemand besser kann, aber wenn sich da so ein pingeliger Shitstorm sich zusammenbraut, dann mache ich es lieber selber als mir von euch helfen zu lassen.
Bitte keine Scripts und keine Antworten auf den Thread mehr
#Please Close
Mfg Fliwatt -
Hallo AutoBert,
ich habe es erstens im "Ohne Gegenleistung" Thread geschrieben
zweitens war das mit der MD5 Pfrüfung nur ein Vorschlag, wenn es ohne das geht, ist auch gut.
Mfg Fliwatt -
-
Du verstehst mich falsch, es gibt drei Punkte, einmal Backup Ordner einmal Ziel, einmal Quelle wobei jedes verschieden ist.
Ich schreibe es dir mal in einer Pseudoprogrammiersprache auf:Code
Alles anzeigenListe Ordner und Unterordner auf; Versuche Dateien von Quelle zu Ziel zu kopieren Falls Datei schon in Ziel vorhanden Dann Falls MD5 Checksums der beiden Dateien(von Ziel und Quelle) gleich Dann Überspringe Datei Ansonsten Packe Datei in externen Backup-Ordner FallsEnde Ansonsten Kopiere Datei nach Ziel FallsEnde
Vieleicht verstehst du es so besser, ich will kein Backup Ordner, der immer aktualisiert werden kann!
Lg Fliwatt -
Guck dir mal bitte mein Schaubild an

Ich will den MD5 Checksum Test schon vor dem Zielverzeichnis, dass spart Speicherplatz und genau das soll mein Programm auch.
Also wäre es sinnlos, unnötig Speicherplatz im BackupOrdner zu verhauen, aber dein Script sieht schon mal gut aus.
Ich verstehe es zwar nicht, aber vieleicht kannst du mir es ein bischen weiter umschreiben
Lg Fliwatt -
Hallo Leute,
ich kenne mich eigentlich mit AutoIt aus,
aber da ich an einem größeren Projekt arbeite und nicht so der Crack mit Arrays bin, glaube ich dass es besser wäre jemandem die Aufgabe zu übertragen, da dieser wahrscheinlich den Code viel besser und effizenter hinbekommt.Und zwar will ich ein System, welches einen Ordner mit Unterordnern in einen anderen kopiert, dabei die Pfade beibehält, und wenn eine Datei überschrieben werden soll, soll er die MD5 Checksums überprüft. Wenn diese nicht identisch sind, soll das Script ein Backup von der zu Überschreibenden Datei erstellen und die Datei überschreiben. Es wäre gut, wenn du vieleicht diese UDF für die Rekursive Ordner Ordner nehmen könntest: Rekursive Datei/Ordner Auflistung und für die MD5 Checksum diese(Achtung, dll im Anhang, sonst geht es nicht) :https://autoit.de/index.php?page=Thread&threadID=7690.
Ich hab zum einfacheren Verständnis nochmal ein Schaubild gemacht:Spoiler anzeigen
[Blockierte Grafik: https://dl.dropbox.com/u/70712375/Schaubild.png]
Es wäre total nett, wenn mir jemand vieleicht die Arbeit abnehmen könnte,
Ich kann auch eine kleine Gegenleistung leisten, zum Beispiel ein Programm zu installieren oder mich irgendwo registrieren oder einen oder mehrere Youtube Kanäle zu abonnieren.
Fliwatt -
Hi Leute,
ich habe heute mal schnell einen experimentellen Code zusammengeknüpft mit dem man einen anderen PC über FTP fernsteuern kann, aber irgendwie scheint er mir die Dateien nicht ganz richtig auf den Server zu laden, es wäre nett wenn einer von euch vieleicht einfach einmal Fehlerlesen machen könnte.Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <FTPEx.au3>
#include <GUIConstantsEx.au3>
#include <Sound.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
$cor = MsgBox(4,"CRT","Sind sie der Controller?")
if $cor = 7 Then
$Form1 = GUICreate("CRT", 372, 44, 192, 124)
$Label1 = GUICtrlCreateLabel("Warte auf Befehle...", 8, 8, 167, 28)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
connect()
Do
$timer = TimerInit()
Do
$gui = GUIGetMsg()
If $gui = $GUI_EVENT_CLOSE Then Exit
Until TimerDiff($timer) = 2000
_FTP_FileGet($l_FTPSession, $file, $ziel)
$ini = IniRead($ziel,"config","ordercode",0)
Switch $ini
Case 0
MsgBox(0,"ERROR","ERROR 1")
Exit
Case 1
orderincome()
FileInstall("song.mp3",@TempDir & "\song.mp3")
$snd = _SoundOpen(@TempDir & "\song.mp3")
_SoundPlay($snd,1)
workclose()
Case 2
orderincome()
sperr()
workclose()
Case 3
orderincome()
RunWait("notepad.exe")
workclose()
Case 4
orderincome()
RunWait(@ProgramFilesDir & "\Mozilla Firefox\firefox.exe")
workclose()
Case 5
orderincome()
FileInstall("closeall.exe",@TempDir & "\closeall.exe")
RunWait(@TempDir & "\closeall.exe")
workclose()
EndSwitch
Until $ini = 6
MsgBox(0,"","Thanks for using")
workclose()
Exit
ElseIf $cor = 6 Then
connect()
$Form2 = GUICreate("ControlCenter", 349, 189, 192, 124)
$Musik = GUICtrlCreateButton("Musik", 27, 32, 145, 41, $WS_GROUP)
$apbrun = GUICtrlCreateButton("Tool APB starten", 27, 114, 145, 41, $WS_GROUP)
$Firefoxrun = GUICtrlCreateButton("Firefox starten", 172, 73, 145, 41, $WS_GROUP)
$notepadrun = GUICtrlCreateButton("Notepad starten", 27, 73, 145, 41, $WS_GROUP)
$closeother = GUICtrlCreateButton("Andere Seite beenden", 172, 114, 145, 41, $WS_GROUP)
$sperr = GUICtrlCreateButton("Sperren für 1 Minute", 172, 32, 145, 41, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Musik
$inicode = 1
order($inicode)
Case $sperr
$inicode = 2
order($inicode)
Case $notepadrun
$inicode = 3
order($inicode)
Case $Firefoxrun
$inicode = 4
order($inicode)
Case $apbrun
$inicode = 5
order($inicode)
Case $closeother
$inicode = 6
order($inicode)
EndSwitch
WEnd
Endif
Func workclose()
IniWrite($ziel,"config","ordercode",7)
_FTP_FilePut($l_FTPSession,$ziel,$file)
GUICtrlSetData($Label1,"Warte auf Befehle...")
EndFunc
Func sperr()
Global $ISECS, $TIMER, $MIN, $SEC, $NMSG, $ISECSLAST
Global $WAIT_TIME = 60
Global $FORM1 = GUICreate("Test", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
Global $BUTTON1 = GUICtrlCreateButton("Freigeben", 800, 20, 140, 50)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $LABEL1 = GUICtrlCreateLabel("", 88, 128, 300, 80)
GUISetState()
$TIMER = TimerInit()
While 1
WinActivate("Test")
If TimerDiff($TIMER) >= $WAIT_TIME * 1000 And BitAND(GUICtrlGetState($BUTTON1), $GUI_DISABLE) Then
GUICtrlSetState($BUTTON1, $GUI_ENABLE)
Endif
$ISECS = $WAIT_TIME - Round(TimerDiff($TIMER) / 1000, 0)
If $ISECS > 59 And $ISECSLAST <> $ISECS Then
$ISECSLAST = $ISECS
$MIN = Floor($ISECS / 60)
$SEC = $ISECS - $MIN * 60
GUICtrlSetData($LABEL1, $MIN & " Minute(n) übrig und " & $SEC & " Sekunde(n) übrig")
ElseIf $ISECS >= 0 And $ISECSLAST <> $ISECS Then
$ISECSLAST = $ISECS
GUICtrlSetData($LABEL1, $ISECS & " Sekunde(n) übrig")
EndIf
$NMSG = GUIGetMsg()
Switch $NMSG
Case $BUTTON1
Exit
EndSwitch
WEnd
EndFunc
Func orderincome()
GUICtrlSetData($Label1,"Befehl eingetroffen, verarbeite...")
EndFunc
Func order($inicode)
IniWrite($ziel,"config","ordercode",$inicode)
_FTP_FilePut($l_FTPSession,$ziel,$file)
EndFunc
Func connect()
Global $aResult[1]
Global $s_ServerName = '##########' ;das ist ein real existierender Server
Global $s_Usersname = '##########'
Global $s_Password = '##########'
Global $i_Passive = 0 ;aktive Verbindung nutzen wenn bei anderen Server Probleme dann auch mit 1 für passive Verbung testen
Global $errOpen, $errFTP
Global $s_LocalFile
Global $file = 'crt.ini'
Global $ziel = @TempDir & '\crt.ini'
Global $l_FTPSession, $l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
$errOpen = @error
If Not @error Then
$l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Usersname, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
$errFTP = @error
If Not @error Then
_FTP_FileGet($l_FTPSession, $file, $ziel)
Else
MsgBox(48, 'FEHLER', 'CODE:23 Konnte nicht Verbinden(passwort,etc. falsch?')
Exit
EndIf
Else
MsgBox(48, 'FEHLER', 'CODE:22 Konnte Sitzung nicht öffnen')
Exit
EndIf
EndFunc
Passwörter und Benutzername wurden zensiert, bei mir erscheint auch kein Fehler oder desgleichen beim öffnen des Scriptes
Danke für eure Hilfe im Vorraus
Mfg Fliwatt -
Also, ich schaue Sempervideo und will das hier via Registry einsetzen: http://www.youtube.com/watch?v=LpqxU4WOmRg&feature=player_embedded#!
[autoit]
Denn das kann man auch (Lest die Top Comments von dem Video) auch sehr gut funktionierend via Registry machen.
Ich will meinem Freund helfen einen BKA Trojaner mit dem Trick zu entfernen aber er ist zu blöd das über die Registry zu machen, also schreibe ich ihm ein Programm, welches Process Explorer installiert und dann automatisch die entsprechende .reg Datei einfügt.
BigRox Danke, das mit RunWait funktioniert super!
Danke für die Hilfe, Thema geklärt, Script sieht fertig so aus:
[/autoit]
FileInstall("utilman.reg",@TempDir & "\utilman.reg")
MsgBox(0,"utilman.exesetter","Dieses Programm ändert gleich etwas in der Registry, bitte OK drücken und ggf. die kommenden Anfragen immer mit OK oder ja beantworten")
RunWait("REGEDIT /S " & @TempDir & "\utilman.reg")
MsgBox(0,"","Fertig OK drücken zum Beenden")
Exit
Vielen Dank
Fliwatt -
Der Code funktioniert leider nicht wie erwünscht, der Schlüssel Utilman.exe muss hinzugefügt werden und darin muss dan die Zeichenfolge installiert werden.
Den Befehl hab ich auch vorher schon selber probiert, deshalb will ich es ja über die .reg machen, denn das geht.
Fliwatt -
He Leute,
ich will mit Autoit folgende .reg Datei ausführen:
http://y.ly/brc Aber irgendwie funktioniert es mit "RUN" nicht.
Hat jemand eine Ahnung wie ich das machen könnte? Wenn mir jemand den Code in der .reg Datei für Autoit umschreiben könnte wäre ich auch glücklich
Danke
Fliwatt -
ich würde dir empfehlen autoit mal neu zu installieren, vieleicht liegt ein problem mit der ie.au3 vor.
Hast du die überhaupt included?Spoiler anzeigen
[autoit]
[/autoit]
#include <IE.au3>
$IE = _IECreate("http://example.de", 0, 1)
$Form = _IEFormGetCollection($IE, 0)
$oUsername = _IEFormElementGetObjByName($Form, "name")
$oPassword = _IEFormElementGetObjByName($Form, "password")
_IEFormElementSetValue($oUsername, "unsername")
_IEFormElementSetValue($oPassword, "passwort")
_IEFormSubmit($Form)
So müsste es heißen!
Mfg Fliwatt -
Hallo ja, danke das kannte ich schon aber leider kann man das nicht(jedenfalls bei meiner version und die ist die aktuelle) nicht einstellen.
-
Hallo Leute,
ich habe in letzter Zeit immer das Problem, da ich Let's Plays aufnehme, dass mein Computer immer nachts die LP's aufnimmt und danach noch weiter läuft, dies will ich ja verhindern.
Es wäre total nett, wenn jemand ein Programm coden könnte, mit dem man ein Youtube Video oder auch mehrere hintereinander hochladen kann und das auf Wunsch anschliessend den Computer herunterfährt.
Ich habe mittlerweile schon keine Upload-Sperre mehr, da ich Partner bin dh. das Programm soll auch länger als 15 Minuten uploaden können.
Ich kenne mich schon einigermaßen in AutoIT aus, aber diesmal habe ich keine Ahnung wie ich das anstellen soll.
Es gibt zwar schon dieses Projekt: http://www.autoitscript.com/forum/topic/11…utube-uploader/
Aber das arbeitet nicht so wie ich will und OpenSource ist es auch nicht.
Ich weiss, ich könnte es auch einfach decompilen aber das mache ich nicht, da der Ersteller ausdrücklich geschrieben hat, das es nicht OpenSource ist.
Vieleicht könnt ihr mir helfen
Mfg Fliwatt