Ich hab das ganze mal überschaubar geändert. Die TrayTips habe ich mit den
Sleeps entfernt, da die 6 Sekunden beim drücken auf den Stop Button nerven
könnten. Falls du sie wieder rein nehmen willst würde ich dir Timer empfehlen.
Eigentlich sollte sich deine Frage von selbst beantworten, wechselst du von
einer Schleife in die andere wird die vorherige nicht mehr beachtet. Ist die
Bedingung für deine 2. Schleife erst einmal erfüllt bleibt sie das bei deinem
Script für immer. Ein einfaches
PHP Code:
If GUIGetMsg() == $button2 Then $AutoChange = False
in deiner 2. Schleife würde das Problem lösen.
Nächstes Problem:
PHP Code:
Sleep(GUICtrlRead($Input1)*1000)
Du pausierst das gesamte Script für die eingetragene Zeit, in der Zeit kannst
du mit einem Script generell wenig Anfang. Die Benutzung eines Timers wäre
hier angebracht. Die Funktionen "_Change" und "_AutoON" sind fast identisch.
Alles in eine Schleife zu packen, wie ich es gemacht habe, ist meiner Meinung
nach praktischer. Den Zusatz "by FreehuntX" beim Titel finde ich außerdem
etwas dreist, da du eigentlich nur die GUI gemacht hast und den Rest vom
"FR!TZBox Reconnecter" kopiert hast und das ohne einen Vermerk.
1. Enthält dieser Reconnector 3 zeilen.
2. Wird es sowieso nicht releaset, es dient lediglich zu privaten zwecken.
3. Würdest du Credits angeben wenn du dir ein Program für eigene zwecke schreibst? Denke ich nicht.
Ich wusste ja dass das Sleep die Probleme verursacht...
Gibt es vielleicht eine andere funktion, ähnlich wie sleep, welche sinnvoller ist?
Den Zusatz "by FreehuntX" beim Titel finde ich außerdem
etwas dreist, da du eigentlich nur die GUI gemacht hast und den Rest vom
"FR!TZBox Reconnecter" kopiert hast und das ohne einen Vermerk.
So gesehen, müsstest du bei jeder GUI, die du entwirfst, die Credits von dem angeben, ders zuerst gemacht hat :P
Oder beim Injecten per WirteProcessMemory, z.B.
Ob ich etwas ähnliches mache, oder ob ich das "Herzstück" 1 zu 1 kopiere ist etwas
anderes. Bei einem Injector kopiert man auch nicht explizit etwas (im "Normalfall").
Naja, die Lösung ist ein Timer, dafür solltest du dir TimerInit() und TimerDiff() anschauen.
Was hindert dich daran, dass von mir gepostete Script zu benutzen? Ist es erst einmal
eine .exe merkst du nur, dass die TrayTips fehlen, die 2 Zeilen kannst du aber auch wieder
mit rein nehmen, dann hast du eigentlich keinen Unterschied.
Ich hab das ganze mal überschaubar geändert. Die TrayTips habe ich mit den
Sleeps entfernt, da die 6 Sekunden beim drücken auf den Stop Button nerven
könnten. Falls du sie wieder rein nehmen willst würde ich dir Timer empfehlen.
Das man einer Funktion Parameter geben kann sollte jedem klar sein. In dieser Funktion ist "$L_Status" einfach der Standardparameter. Würde diese Funktion keinen Standardparameter haben könnte man die Funktion nicht mit "_Change()" (Zeile 39) aufrufen, sondern müsste "_Change($L_Status)" benutzen.
PHP Code:
Func _ChangeH()
Die Funktion gibt es aus 2 Gründen. Zum einen kann man Funktionen, die durch Hotkeys aufgerufen werden, keine Parameter mitgeben. Da die Funktion "_Change($Label)" aber einen Parameter besitzt, würdest du nur einen Fehler bekommen. Zum anderen ist in der Funktion aber noch eine Abfrage, man löst die Funktion also nicht permanent aus, wenn man den Hotkey gedrückt hält.
PHP Code:
If $Label == $L_Status Then GUICtrlSetState($B_Change, $GUI_DISABLE)
;...
If $Label == $L_Status Then GUICtrlSetState($B_Change, $GUI_ENABLE)
Hier wird geprüft, ob das Label "$L_Status ist". Wird die Funktion durch den Button oder dem Hotkey ausgelöst, wird der Button "$B_Change" zunächst deaktiviert und nach dem Reconnect wieder aktiviert. Ist der Parameter "$L_StatusT" wird am Button "$B_Change" nichts geändert.
PHP Code:
If $Hotkey == False Then $Hotkey = True
Hier wird einfach geprüft, ob die globale Variable "False" ist. Ist die Bedingung erfüllt wird die Variable auf "True" gesetzt. Die Variable wird für den Hotkey benutzt. Theoretisch hätte man aber auch einfach "$Hotkey = True" nehmen können.
Wenn du dir die Hilfe zu "TimerInit()" und "TimerDiff()" anguckst, sollte der Rest auch verständlich sein.
Zum Vergleich benutze ich "==", bei AutoIt könntest du aber auch je nach Situation "=" benutzen. Die meisten benutzen nur "=", aber auch bei AutoIt gibt es einen Unterschied zwischen "=" und "==".
Probleme mit den Schleifen x.x 07/23/2010 - AutoIt - 18 Replies Ja, hallo. :D
Mein Problem ist das ich gerne einen Bot bauen würde der einnen Tastendruck ausführt wenn sich ein bestimmer Pixel auf dem Bildschirm verändert.
Nur ist das Problem das AutoIt zu lahm ist da der Pixel sich schnell beweget und somit auch seine Farbe ändert und der Bot dann es nichtmehr schafft zuzuschlagen. :P
Was ich nun versucht hab ist das man vll. sozusagen eine Tolleranz einbaut wie z.b. bei dem Pixelsearch Befehl nur ich hab ka. wie ich das anstellen soll.
Ich...
Auto-Schleifen [Problem] 06/23/2010 - Off Topic - 10 Replies Hallo,
und zwar brauche ich Informationen über das Schleifen.
Am besten wäre folgendes:
Woher kommt das Schleifen?
Wie schleift man richtig?
AutoIt - Frage/Problem bei den Schleifen!! 04/05/2010 - AutoIt - 6 Replies Nabend,
ich hätte da mal eine kleine Frage zum unterbrechen von Endlosschleifen.
Und nein, damit meine ich nicht einfach den Befehl "Exitloop"!
Also, ich werde mal anhand eines kleinen Test-Scripts versuchen, meine Frage zu erklären:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
Exitloop Problem mit mehreren Schleifen 10/21/2009 - AutoIt - 5 Replies Abend !
und zwar sieht mein Problem wie folgt aus:
While 1=1
(das script)
If...Then
-hier ist das problem: ich möchte das das programm die while schleife sozusagen pausiert
-dann das was gemacht werden soll