Hallo Liebe Community,
ich habe seit 3 Tagen angefangen eine Programmiersprache zu lernen ( für den Anfang Autoit). Nach diversen Tutorials, videos und selbst ausprobieren, habe ich mich an meinem ersten "Programm" versucht.
würde mich auch über Tipps für die Übersichtlichkeit bedanken, damit ich mir das dann gleich richtig angewöhne.
Nur jetzt habe ich ein Problem mit dem IniWrite. Ich möchte das nach drücken des Button "Start" eine Ini erzeugt, welche die Pfadangabe des Firefox speichert um beim erneuten start der Anwendung der pfad direkt im Inputfeld steht.
Und zwar wird durch drücken und auswählen des Durchsuchen-Buttons ein Inputfeld durch GUIctrlSetData mit dem Pfad der Datei versorgt. Soweit klappt nun alles wunderbar. Nun habe ich jedoch das Problem wenn ich den Befehl Iniwrite nutze, dann erzeugt er keine Ini wenn das Feld versorgt wurde. Wenn ich in das Feld manuell eine Eingabe mache, dann erstellt er die Ini ohne Probleme. Ich hab im Internet schonmal danach gesucht, und das Problem liegt höchstwahrscheinlich an dem FileOpenDialog.
Habe euch mal den code beigefügt, und kann sein, dass das script noch sehr "unaufgeräumt" aussieht.
Deshalb wäre ich auch evtl froh, wenn mir jemand verbesserungsvorschläge für die Übersicht geben könnte. Aus Platzgründen hab ich den Code mal im Expander reingetan.
- Global $Paused
- Local $sec, $min, $hr, $day
- HotKeySet("{F2}", "Anhalten")
- HotKeySet("{ESC}", "Terminate")
- #include <ButtonConstants.au3>
- #include <EditConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #include <Date.au3>
- #Region ### START Koda GUI section ### Form=C:\Users\Daniel\Documents\Autoit\Koda\Votomat Form.kxf
- $Form1_1 = GUICreate("Votumat", 604, 346, 201, 135)
- GUISetFont(8, 800, 0, "MS Sans Serif")
- GUISetBkColor(0xC0C0C0)
- $ID = GUICtrlCreateLabel("ID:", 24, 112, 23, 20)
- $PW = GUICtrlCreateLabel("PW:", 24, 136, 32, 20)
- $Firefox = GUICtrlCreateLabel("Firefox:", 24, 160, 55, 20)
- $InputID = GUICtrlCreateInput("", 88, 104, 153, 24)
- $InputPW = GUICtrlCreateInput("", 88, 128, 153, 24,$ES_PASSWORD)
- $Inputfirefox = GUICtrlCreateInput("", 88, 152, 321, 24)
- $durchsuchen = GUICtrlCreateButton("...", 408, 152, 33, 25, $BS_DEFPUSHBUTTON)
- $Start = GUICtrlCreateButton('Start', 0, 208, 600, 65, $BS_DEFPUSHBUTTON)
- $Label1 = GUICtrlCreateLabel("Hotkeys", 8, 8, 61, 20)
- $Label2 = GUICtrlCreateLabel("F2=Anhalten", 8, 32, 89, 20)
- $Label3 = GUICtrlCreateLabel("ESC=Exit", 120, 32, 67, 20)
- $Label4 = GUICtrlCreateLabel("Du kannst wieder voten in :", 8, 288, 416, 41)
- GUICtrlSetFont(-1, 19, 800, 0, "MS Sans Serif")
- GUICtrlSetColor(-1, 0xFF0000)
- $Uhrzeit = GUICtrlCreateInput("12:00:00 h", 424, 288, 177, 45); Anfangszeit
- GUICtrlSetFont(-1, 19, 800, 0, "MS Sans Serif")
- GUICtrlSetColor(-1, 0xFF0000)
- GUICtrlSetState(-1, $GUI_DISABLE)
- $Label5 = GUICtrlCreateLabel("Script startet...", 368, 0, 103, 20)
- GUICtrlSetState(-1, $GUI_HIDE)
- $Label6 = GUICtrlCreateLabel("Script läuft...", 368, 0, 103, 20)
- GUICtrlSetState(-1, $GUI_HIDE)
- $invisible = GUICtrlCreateInput('12', 80, 45, 20, 20, $ES_NUMBER) ;anzahl der zu Wartenden Zeit in Stunden
- GUICtrlSetState($invisible, $GUI_HIDE)
- GUISetState()
- #EndRegion ### END Koda GUI section ###
- While 1
- $msg = GUIGetMsg()
- Switch $msg
- Case $Start
- If GUICtrlRead($invisible) = '' Then
- $hr = 0
- Else
- $hr = GUICtrlRead($invisible)
- EndIf
- $id=GUICtrlRead($InputID)
- $pw=GUICtrlRead($InputPw)
- $firefoxpfad=GuictrlRead($Inputfirefox)
- IniWrite("settings.ini","Eingaben","Firefox",$firefoxpfad)
- If $id = "" Then Msgbox (0,"Fehler", "Bitte ID eingeben")
- If $pw = "" Then MsgBox (0,"Fehler", "Bitte PW eingeben")
- If $firefoxpfad ="" Then MsgBox (0,"Fehler", "Bitte Firefox auswählen.")
- If $id and $pw and $firefoxpfad = Not "" Then
- $Label5 = GUICtrlCreateLabel("Script startet...", 368, 0, 103, 20)
- _Start()
- EndIf
- Case $GUI_EVENT_CLOSE
- Exit
- Case $durchsuchen
- $Datei = FileOpenDialog("Wähle dein Firefox aus", "C:\", "Alles (*.*)")
- Guictrlsetdata($Inputfirefox,$Datei)
- $firefoxpfad=GuictrlRead($Inputfirefox)
- IniWrite("settings.ini","Eingaben","Firefox",$firefoxpfad)
- EndSwitch
- Sleep (20)
- WEnd
- Func Anhalten()
- $Paused = Not $Paused
- While $Paused
- GUICtrlSetState($Label6, $GUI_HIDE)
- $Label7 = GUICtrlCreateLabel("Pause", 368, 0, 103, 20)
- Sleep(20)
- WEnd
- $Label6 = GUICtrlCreateLabel("Script läuft...", 368, 0, 103, 20)
- EndFunc ;==>Pause für Hotkey
- Func Terminate()
- For $i = 1 To 1 Step -1
- MsgBox(0, "Schließt in...", $i & " Sekunden", 1)
- Next
- MsgBox(0, "", "Script beendet!", 1)
- Exit 0
- EndFunc ;==>Terminate
- Func _Start()
- While 1
- Sleep(20)
- For $i = 5 To 1 Step -1
- MsgBox(0, "Start in...", $i & " Sekunden" & @CRLF & @CRLF & "BEACHTEN: MAUS & Tastatur für 1 Minute in Ruhe lassen", 1)
- Next
- MsgBox(0, "", "Fertig!", 1)
- GUICtrlSetState($Label5, $GUI_HIDE)
- $Label6 = GUICtrlCreateLabel("Script läuft", 368, 0, 103, 20)
- IniWrite("settings.ini","Eingaben","Firefox",GuiCtrlRead($Inputfirefox))
- Run($Datei);Startet Firefox
- WinWaitActive ("Google - Mozilla Firefox")
- Send("{F6}");Auswahl Titelleiste
- Sleep(2000)
- Send("http:
- Sleep(1000)
- Send("{enter}");startet Hompage
- WinWaitActive ("Seidenkraft Online - Mozilla Firefox")
- Sleep (5000)
- Send("{TAB}")
- Sleep(1000)
- Send("{TAB}")
- Sleep(1000)
- Send("{TAB}")
- Sleep(1000)
- Send("{TAB}")
- Sleep(1000)
- Send("{TAB}")
- Sleep(1000)
- Send($id) ;benutzt ID von Abfrage
- Send("{TAB}")
- Send($pw) ;benutzt PW von Abfrage
- Sleep(1000)
- $Login = PixelSearch(0, 0, 1919, 1079, 0x628D26)
- If Not @error Then
- MouseClick("left", $Login[0], $Login[1])
- EndIf ;drückt Login
- sleep(5000)
- WinwaitActive("Seidenkraft Online - Mozilla Firefox")
- $vote1 = PixelSearch(0, 0, 1919, 1079, 0x7E5E2B)
- If Not @error Then
- MouseClick("left", $vote1[0], $vote1[1])
- If @error then Send ("{F5}")
- EndIf ;drückt 1. Voteseite
- Sleep(1000)
- Send("{ctrldown}+{TAB}") ;sorgt dafür das man wieder in die 1. Tab kommt.
- Send("{ctrlup}")
- WinWaitActive ("Seidenkraft Online - Mozilla Firefox")
- Sleep(1000)
- $vote2 = PixelSearch(0, 0, 1919, 1079, 0x0666B3)
- If Not @error Then
- MouseClick("left", $vote2[0], $vote2[1])
- If @error then Send ("{F5}")
- EndIf ;drückt 2. Voteseite
- Sleep(1000)
- Send("{ctrldown}+{TAB}") ;sorgt dafür das man wieder in die 1. Tab kommt.
- Send("{ctrlup}")
- WinWaitActive ("Seidenkraft Online - Mozilla Firefox")
- Sleep(1000)
- $vote3 = PixelSearch(0, 0, 1919, 1079, 0x8A6135)
- If Not @error Then
- MouseClick("left", $vote3[0], $vote3[1])
- If @error then Send ("{F5}")
- EndIf ;drückt 3. Voteseite
- Sleep(1000)
- Send("{ctrldown}+{TAB}") ;sorgt dafür das man wieder in die 1. Tab kommt.
- Send("{ctrlup}")
- WinWaitActive ("Seidenkraft Online - Mozilla Firefox")
- Sleep(1000)
- $vote4 = PixelSearch(0, 0, 1919, 1079, 0xA10F22)
- If Not @error Then
- MouseClick("left", $vote4[0], $vote4[1])
- If @error then Send ("{F5}")
- EndIf ;drückt 4. Voteseite
- Sleep(1000)
- Send("{ctrldown}+{TAB}") ;sorgt dafür das man wieder in die 1. Tab kommt.
- Send("{ctrlup}")
- WinWaitActive ("Seidenkraft Online - Mozilla Firefox")
- Sleep(1000)
- $vote5 = PixelSearch(0, 0, 1919, 1079, 0x3C23D7)
- If Not @error Then
- MouseClick("left", $vote5[0], $vote5[1])
- If @error then Send ("{F5}")
- EndIf ;drückt 5. Voteseite
- Sleep(1000)
- Send("{ctrldown}+{TAB}") ;sorgt dafür das man wieder in die 1. Tab kommt.
- Send("{ctrlup}")
- WinWaitActive ("Seidenkraft Online - Mozilla Firefox")
- Sleep(1000)
- $Aktualisieren = PixelSearch(0, 0, 1919, 1079, 0xC1902D)
- If Not @error Then
- MouseClick("left", $Aktualisieren[0], $Aktualisieren[1])
- EndIf
- WinWaitActive ("Seidenkraft Online - Mozilla Firefox")
- Sleep(1000)
- $Ausloggen = PixelSearch(0, 0, 1919, 1079, 0x4C3A24)
- If Not @error Then
- MouseClick("left", $Ausloggen[0], $Ausloggen[1])
- EndIf ;drückt Ausloggen
- Sleep(3000)
- WinClose("Seidenkraft Online - Mozilla Firefox")
- Sleep(2000)
- Send("{Enter}")
- _CountDown($sec, $min, $hr, $day, True, $Uhrzeit)
- Sleep (1000)
- WEnd
- EndFunc
- Func _CountDown($SEC, $MIN=0, $HOUR=0, $DAY=0, $VISIBLEDOWN=True, $ALTERNATECTRL='TT')
- $Sekunden = $SEC + $MIN*60 + $HOUR*3600 + $DAY*86400
- $end = _DateAdd('s', $Sekunden, _NowCalc())
- Local $message
- Do
- $sec = _DateDiff('s', _NowCalc(), $end)
- If Not $VISIBLEDOWN Then
- $secShow = $Sekunden - $sec
- Else
- $secShow = $sec
- EndIf
- Select
- Case $secShow < 60
- If $ALTERNATECTRL = 'TT' Then
- ToolTip(StringFormat('%02u', $secShow) & ' s')
- Else
- GUICtrlSetData($ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
- EndIf
- Case $secShow < 60*60
- $message = StringFormat('%02u', Floor($secShow/60)) & ':' & _
- StringFormat('%02u', Mod($secShow,60)) & ' min'
- If $ALTERNATECTRL = 'TT' Then
- ToolTip($message)
- Else
- GUICtrlSetData($ALTERNATECTRL, $message)
- EndIf
- Case $secShow < 60*60*24
- $message = StringFormat('%02u', Floor($secShow/3600)) & ':' & _
- StringFormat('%02u', Floor(Mod($secShow,3600)/60)) & ':' & _
- StringFormat('%02u', Mod(Mod($secShow,3600),60)) & ' h'
- If $ALTERNATECTRL = 'TT' Then
- ToolTip($message)
- Else
- GUICtrlSetData($ALTERNATECTRL, $message)
- EndIf
- Case Else
- $message = Floor($secShow/86400) & ' d / ' & _
- StringFormat('%02u', Floor(Mod($secShow,86400)/3600)) & ':' & _
- StringFormat('%02u', Floor(Mod(Mod($secShow,86400),3600)/60)) & ':' & _
- StringFormat('%02u', Mod(Mod(Mod($secShow,86400),3600),60)) & ' h'
- If $ALTERNATECTRL = 'TT' Then
- ToolTip($message)
- Else
- GUICtrlSetData($ALTERNATECTRL, $message)
- EndIf
- Sleep (6000)
- EndSelect
- Until $sec = 0
- EndFunc ;==>_CountDown
Alles anzeigen
Zur Information, habe getestet wenn ich Manuell die Eingabe des inputfeldes "Firefox" betätige speichert er mir die Ini in dem Verzeichnis wo das Script liegt, wenn ich über den Button mache, wird keine Ini -Datei erstellt im Verzeichnis wo das script liegt, als auch nicht wo die ausgewählte Datei liegt, auch nicht unter C:\. Da ich nun nicht mehr weiter weis frag ich die Experten von hier
(Das Script wird bisher noch über Mousecklicks etc. gestartet, das mit den Controls bekomme ich noch nicht hin, da ich die Steuerelemente der Seite nicht ausgelesen bekomme,wenn mir jemand dabei noch helfen könnte wäre supi, ansonsten arbeite ich später daran)
Würde mich über Kritik freuen.
Gruß
darthrader
€dit: habs glaub im Falschen Bereich gepostet, wenn ja bitte verschieben =)