2d Array mit Benutzer|Passwort und dann in einer For-Schleife durchgehen.Quote:
Hi,
ich habe auch nocheinmal eine Frage und zwar habe ich eine Script, indem ein Benutzername und ein Passwort aus jeweils einem Textfeld ausgelesen wird. Jetzt habe ich es so gemacht das der Benutzer mehrere Benutzer und Passwörter eingeben kann d.h. mehrere Textfelder.
Jetzt zu meiner Frage :) : Ist es möglich, mit einer Schleife oder ähnlichem es so hinzukriegen das er beim 1. Durchlauf Benutzer1 nimmt und beim 2. Benutzer2?
Denn in meiner jetzigen Form ist der Script ewig lang, da ich den Vorgang immer nur hintereinander eingefügt habe.
Danke für eure Hilfe
Gruß
Evoh
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 223, 165, 192, 124)
$Benutzer = GUICtrlCreateInput("Benutzer", 32, 32, 169, 21)
$Password = GUICtrlCreateInput("Password", 24, 64, 137, 21)
$Go = GUICtrlCreateButton("Go", 32, 112, 89, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Global $aUserPassword[10][2] = [['Benutzer1', 'Passwort1'], _
['Benutzer2', 'Passwort2'], _
['Benutzer3', 'Passwort3'], _
['Benutzer4', 'Passwort4'], _
['Benutzer5', 'Passwort5'], _
['Benutzer6', 'Passwort6'], _
['Benutzer7', 'Passwort7'], _
['Benutzer8', 'Passwort8'], _
['Benutzer9', 'Passwort9'], _
['Benutzer10', 'Passwort10']]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Go
For $i = 0 To UBound($aUserPassword) - 1
If GUICtrlRead($Benutzer) == $aUserPassword[$i][0] And GUICtrlRead($Password) == $aUserPassword[$i][1] Then
MsgBox(0x40, 'Hi', 'OK')
ExitLoop
EndIf
Next
EndSwitch
WEnd
Func button() For $i= 1 To 10 $zahl -= 1 Sleep(1000) Next EndFunc
AdlibRegister("button", 1000)
Func button()
$zahl -= 1
If $zahl = 0 Then AdlibUnRegister("button")
EndFunc
$gedrueckt = False $t = 0 While 1 If $gedrueckt Then If TimerDiff($t) >= 1000 Then $zahl -= 1 $t = TimerInit() If $zahl = 0 Then $gedrueckt = False EndIf EndIf WEnd Func button() $gedrueckt = TrayCreateItem Next
Der zählt jetzt runter richtig, aber er zählt auch weiter wenn der Button nicht mehr gedrückt ist.. ich hab mir da sowas ähnliches wie bei dem GuiCtrlCreateUpDown vorgestellt.Quote:
Das kommt drauf an, was genau du haben möchtest.
Grundsätzlich kannst du einfach in der Funktion eine For-Schleife machen, die 10 mal durchgegangen wird. Da machst du halt ein Sleep(1000) rein und verringerst die Zahl in jedem Durchgang um 1.
Das Problem ist, dass in der Zeit nichts anderes gemacht werden kann.
Willst du gleichzeitig andere Befehle ausführen, kannst du eine Funktion machen, die die Zahl verringert und per AdlibRegister alle 1000ms ausführen.
Dann baust du noch mit AdlibUnregister ein, dass die Funktion nicht weiter aufgerufen wird, wenn die Zahl 0 erreicht.
PS: Da wo hier nur $zahl-=1 steht, musst du natürlich auch das entsprechende Label im GUI updaten.
Hab mal nen Code geschrieben:Quote:
Den Button gedrückt zu halten, ist eigentlich nicht vorgesehen.
Indirekt könntest du das lösen, indem du abfragst, ob die Maustaste gedrückt ist, und wenn ja, ob der Zeiger sich über dem Button befindet.
$Form1 = GUICreate("DOUBLE FEED", 201, 70, -1, -1)
Opt("GUIOnEventMode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_GUI_EVENT_PRIMARYDOWN")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_GUI_EVENT_PRIMARYDOWN1")
Global $Button2 = GUICtrlCreateButton("+", 88, 40, 17, 17)
Global $Button3 = GUICtrlCreateButton("-", 104, 40, 17, 17)
Func _GUI_EVENT_PRIMARYDOWN()
While 1
Sleep(100)
If $x = "100" Then Exitloop
If BitAND(_GUICtrlButton_GetState($Button2), $BST_PUSHED) = $BST_PUSHED Then
$x += 1
If GUICtrlRead($Label3) <> ("Sound: " & $x & "%") Then
GUICtrlSetData($Label3, "Sound: " & $x & "%")
$object.settings.volume = $x
EndIf
If $x = "100" Then Exitloop
Else
Return
EndIf
WEnd
EndFunc
Func _GUI_EVENT_PRIMARYDOWN1()
While 1
Sleep(100)
If $x = "0" Then Exitloop
If BitAND(_GUICtrlButton_GetState($Button3), $BST_PUSHED) = $BST_PUSHED Then
$x -= 1
If GUICtrlRead($Label3) <> ("Sound: " & $x & "%") Then
GUICtrlSetData($Label3, "Sound: " & $x & "%")
$object.settings.volume = $x
EndIf
If $x = "0" Then Exitloop
Else
Return
EndIf
WEnd
EndFunc
Func _Exit()
Exit
EndFunc
für dein problem gibt es guigetcursorinfo...Quote:
EDIT: Ich habs jetzt soweit das er nach unten zählt das Label flackert zwar aber egal.. nur zählt er nicht nach oben...
GUICreate('GUI', 200, 40, Default, Default, 0x10C80000)
$ctrlBtn = GUICtrlCreateButton('Press Me', 10, 10, 85, 20)
$ctrlLabel = GUICtrlCreateLabel(0, 105, 10, 85, 20, 0x1201)
While GUIGetMsg()<>-3
$cursor = GUIGetCursorInfo()
If $cursor[2] And $cursor[4]=$ctrlBtn Then GUICtrlSetData($ctrlLabel, GUICtrlRead($ctrlLabel)+1)
WEnd
Jo klappt, nur bin ich jetzt überfragt wie ich das stop wenn das Label die 1000 oder die 0 erreicht hat O.o Exitloop geht nicht weil ich da noch andere Sachen in der While habe, und es kommt ne Fehlermeldung, wenn ich aufn Desktop klick. Habs schon mit Else Return versucht geht aber nich..Quote:
für dein problem gibt es guigetcursorinfo...
Code:GUICreate('GUI', 200, 40, Default, Default, 0x10C80000) $ctrlBtn = GUICtrlCreateButton('Press Me', 10, 10, 85, 20) $ctrlLabel = GUICtrlCreateLabel(0, 105, 10, 85, 20, 0x1201) While GUIGetMsg()<>-3 $cursor = GUIGetCursorInfo() If $cursor[2] And $cursor[4]=$ctrlBtn Then GUICtrlSetData($ctrlLabel, GUICtrlRead($ctrlLabel)+1) WEnd
GUICreate('GUI', 200, 40, Default, Default, 0x10C80000)
$ctrlBtn = GUICtrlCreateButton('Press Me', 10, 10, 85, 20)
$ctrlLabel = GUICtrlCreateLabel(0, 105, 10, 85, 20, 0x1201)
While GUIGetMsg()<>-3
$labelValue = GUICtrlRead($ctrlLabel)
If $labelValue < 1000 Then
$cursor = GUIGetCursorInfo()
If Not @error And $cursor[2] And $cursor[4]=$ctrlBtn Then GUICtrlSetData($ctrlLabel, $labelValue+1)
EndIf
WEnd
man baut doch kein zusätzliches sleep in die schleife ein, in der sich schon ein guigetmsg befindet <.<Quote:
Ja das funktioniert. Wieder was dazugelernt, vielen Dank!
noch eine nicht so dramatische Frage, manchmal wird das Label sofort auf 0 oder gleich 200 höher gesetzt wieso passiert das?
EDIT: Habs mit nem simplen Sleep(1) wegbekommen.
MfG
Kilroy.
$Test[0][0] = $Input1
$Test[0][1] = $Input2
#include<IE.au3>
#include<Array.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\users\****\desktop\kodak autoit\forms\votetest1.kxf
$Form1_1 = GUICreate("Form1", 615, 438, 258, 131)
$Ueberschirft = GUICtrlCreateLabel("Test1", 208, 8, 181, 28)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("1", 40, 72, 145, 21)
$Input2 = GUICtrlCreateInput("2", 40, 112, 145, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
DIM $Test[1][2]
$Test[0][0] = $Input1
$Test[0][1] = $Input2
_ArrayDisplay($Test,"Kompletter Array")