Quote:
Originally Posted by freehuntx
Mal so am Rande.
Dein Script ändert sofort nach drücken des buttons die ip, aber er soll ja immer nach einer bestimmten zeit die ip ändern.
|
Wenn ich bei etwas eine Zeitspanne angebe und anschließend davon Gebrauch
mache, gehe ich davon aus, dass es sich auch beim starten bemerkbar macht.
Außerdem genügt es eine Zeile auszukommentieren. Was ist daran schwer?
Code:
#include <INet.au3>
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=
GUICreate("FR!TZBox IP Changer by FreehuntX", 360, 155)
GUICtrlCreateGroup("Simple Changer", 8, 0, 153, 57)
$B_Change = GUICtrlCreateButton("Change", 16, 24, 75, 25)
GUICtrlCreateLabel("or Num1", 96, 32, 53, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateLabel("Current IP:", 8, 72, 54, 17)
$L_IP = GUICtrlCreateLabel("Please Wait", 64, 72, 101, 17)
GUICtrlCreateGroup("Status", 8, 96, 153, 49)
$L_Status = GUICtrlCreateLabel("Nothing...", 20, 120, 140, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Time Changer", 168, 0, 185, 145)
$I_Delay = GUICtrlCreateInput("1800", 224, 22, 113, 21)
GUICtrlCreateLabel("Delay:", 176, 24, 34, 17)
$B_Start = GUICtrlCreateButton("Start", 176, 56, 75, 25)
$B_Stop = GUICtrlCreateButton("Stop", 264, 56, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Status", 176, 88, 169, 49)
$L_StatusT = GUICtrlCreateLabel("Nothing...", 190, 112, 145, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetState($B_Stop, $GUI_DISABLE)
GUICtrlSetdata($L_IP, _GetIp())
Global $Start, $AutoChange = False
Global $Timer, $Hotkey = True
HotKeySet("{NUMPAD1}", "_ChangeH")
While Sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $B_Change
_Change()
Case $B_Start
GUICtrlSetState($B_Start, $GUI_DISABLE)
GUICtrlSetState($B_Stop, $GUI_ENABLE)
$AutoChange = True
$Start = True
Case $B_Stop
GUICtrlSetState($B_Start, $GUI_ENABLE)
GUICtrlSetState($B_Stop, $GUI_DISABLE)
$AutoChange = False
$Timer = 0
EndSwitch
If $AutoChange Then
If $Start Then
[SIZE="6"][COLOR="Green"];_Change($L_StatusT)[/COLOR][/SIZE]
$Timer = TimerInit()
$Start = False
EndIf
If TimerDiff($Timer) >= (GUICtrlRead($I_Delay) * 1000) Then
_Change($L_StatusT)
$Timer = TimerInit()
EndIf
EndIf
WEnd
Func _ChangeH()
If $Hotkey Then
$Hotkey = False
_Change()
EndIf
EndFunc
Func _Change($Label = $L_Status)
If $Label == $L_Status Then GUICtrlSetState($B_Change, $GUI_DISABLE)
GUICtrlSetdata($Label,"Changing...")
RunWait(@ComSpec & " /c " & 'type data.box | "' & @ScriptDir & '\nc.exe" -w 1 fritz.box 49000 >nul', "", @SW_HIDE)
GUICtrlSetdata($L_IP, _GetIp())
GUICtrlSetdata($Label, "Last Change: " & @HOUR & ":" & @MIN & ":" & @SEC)
If $Label == $L_Status Then GUICtrlSetState($B_Change, $GUI_ENABLE)
If $Hotkey == False Then $Hotkey = True
EndFunc
Quote:
Originally Posted by freehuntx
Hast du den Sinn von Delay verstanden?
Es steht dafür, z.B. alle 30 Minuten die Ip zu ändern.
Wie soll es deiner meinung nach ohne Sleep funktionieren...
|
Jetzt wo ich es lese, mir scheint, dass du seit Beginn des Threads nichts gelernt hast.
Die Lösung befand sich schon bereits im 2. Beitrag (Timer, kein Sleep). PenGuin :O gab
dir noch ein Beispiel mit AdlibRegister (kein Sleep), was zur Lösung beitragen kann. Du
solltest aus anderen Scripts lernen und nicht darauf hoffen, dass es dir jemand so
zusammenstellt wie du es dir vorstellst, um es anschließend nur noch kopieren zu müssen.
Und wie PenGuin :O schon sagte gibt es keinen Grund unhöflich zu werden, das bringt
niemanden weiter, du machst es dir durch Unbeliebtheit höchstens schwieriger.