Hi wie kann man einer InputBox 10 Zeilen geben und diese werden per Zufalls prinzip ausgegeben. Eine InputBox bekomm ich hin aber eine mit mehrern Zeilen ? Und wie das ganze ausgeben
Damit nicht jeder meine spätere exe benutzen kann, bräuchte ich ein Passwort das man eingeben muss damit man die exe starten kann.
Input Box
-
- [ offen ]
-
Hank -
12. Februar 2010 um 13:50 -
Geschlossen -
Erledigt
-
-
willst du dass man mehrere zeilen eingeben kann oder dass der text der inputbox in zufälliger reihenfolge erscheint?
ausgeben kannste doch per msgbox, per gui, per tooltip, ...
-
Du kannst mehrere InputBoxen mit ner For Schleife anzeigen, die ergebnisse in einem Array speichern
[autoit]
und dann mit Random einen zufälligen Array ausgeben.
Beispiel:Dim $input[10]
[/autoit]
For $i = 0 To 9
$input[$i] = InputBox("Text", "Gib nen Text ein")
Next
MsgBox(0, "Test", $input[Random(0, 9, 1)]) -
Danke PrideRage so hab ich mir das gedacht, naja wobei geht das auch in einem großen Fenster das man alle nebeneinander sieht ?
Ist das mit dem Passwort realisierbar. Also das man ein Passwort braucht um die .exe zu starten
Ich hätte es aber gerne in das Notepad ausgegeben mal so zum testen. -
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include "_InputBox.au3"
;string rückgabe
$sInput = _InputBox(4, "InputBox Beispiel", "text 1|nummer 2|und die 3|sogar 4", _
"ABCDEFG|nur klein|9876KLMNRS|Hohoho", 2, "", 1)
If Not @error Then
MsgBox(0, "", $sInput)
EndIf;Array Rückgabe
[/autoit]
$aInput = _InputBox(4, "InputBox Beispiel", "text 1|nummer 2|und die 3|sogar 4", _
"ABCDEFG|nur klein|9876KLMNRS|Hohoho", 2)
If Not @error Then
_ArrayDisplay($aInput)
MsgBox(0, "", $aInput[Random(0, UBound($aInput) - 1, 1)])
EndIf_InputBox.au3
[autoit]#include-once
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>Global $sInputs_Array[1][2]
[/autoit] [autoit][/autoit] [autoit]If Not IsDeclared("WM_COMMAND") Then Global Const $WM_COMMAND = 0x0111
[/autoit] [autoit][/autoit] [autoit]
If Not IsDeclared("WM_MOVE") Then Global Const $WM_MOVE = 0x0003
If Not IsDeclared("WM_LBUTTONDOWN") Then Global Const $WM_LBUTTONDOWN = 0x0201
If Not IsDeclared("WM_RBUTTONDOWN") Then Global Const $WM_RBUTTONDOWN = 0x0204Global $sToolTip_Text[2] = ["You can only type certain characters.", "Unacceptable Character:"]
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_MOVE, "WM_CLEAR_TOOLTIP")
GUIRegisterMsg($WM_LBUTTONDOWN, "WM_CLEAR_TOOLTIP")
GUIRegisterMsg($WM_RBUTTONDOWN, "WM_CLEAR_TOOLTIP")Func _InputBox($iCount, $sTitle, $sText, $sDefault, $iRows = 1, $sRegExp = "", $iMode = 0, $sDelim = "|")
[/autoit] [autoit][/autoit] [autoit]
;Author: SEuBo
;$iCount: Anzahl der "Inputgruppen"
;$sTitle: Titel der _InputBox
;$sText: Text für die einzelnen Gruppen. Hier wird ein Trennzeichenseperierter String benötigt
;BSP: "1|2|3". Das Trennzeichen kann in $sDelim selbst bestimmt werden, falls das erwünscht ist
;$sDefault: Default-Text für die Input felder. Hier wird wieder ein seperierter String benötigt.
;$iMode: Der Rückgabemodus. 0 (Standard) = Array. 1 = mit $sDelim seperierter String.
Dim $sInputs_Array[1][2]
$OnEvent = Opt("GUIOnEventMode", 0)
Local $aData[$iCount + 1][2], $ifCount = 0, $aText = StringSplit($sText, $sDelim, 2), $aDefault = StringSplit($sDefault, $sDelim, 2), $aRegExp = StringSplit($sRegExp, $sDelim, 2)
If $iCount = "" Or $iCount < 1 Or $iMode < 0 Or $iMode > 1 Or $sDelim = "" Then
Return SetError(2, 0, "")
EndIf
If $aDefault[0] < $iCount + 1 Or $aDefault[0] > $iCount + 1 Then
ReDim $aDefault[$iCount + 1]
EndIf
If $aText[0] < $iCount + 1 Or $aText[0] > $iCount + 1 Then
ReDim $aText[$iCount + 1]
EndIf
If $aRegExp[0] < $iCount + 1 Or $aRegExp[0] > $iCount + 1 Then
ReDim $aRegExp[$iCount + 1]
EndIf
$_InputBox = GUICreate($sTitle, 220 * $iRows, 65 + $iCount / $iRows * 95, -1, -1, -1, 0x00000008)
For $r = 1 To $iRows
For $i = 1 To $iCount / $iRows
$aData[$ifCount][0] = GUICtrlCreateLabel($aText[$ifCount], 20 + (($r - 1) * 190), (($i - 1) * 95) + 25, 180, 55)
$aData[$ifCount][1] = GUICtrlCreateInput($aDefault[$ifCount], 20 + (($r - 1) * 190), (($i - 1) * 95) + 75, 180, 25)
_GUIInputSetRegExp($aData[$ifCount][1], $aRegExp[$ifCount])
$ifCount += 1
Next
Next
$hButton = GUICtrlCreateButton("Ok", 20, ((($ifCount/$iRows) - 1) * 95) + 110, 80, 25)
$hCancel = GUICtrlCreateButton("Cancel", 120, ((($ifCount/$iRows) - 1) * 95) + 110, 80, 25)
GUISetState()
While 1 * Sleep(50)
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3, $hCancel
GUIDelete($_InputBox)
Return SetError(1, 0, "")
Case $hButton
Switch $iMode
Case 0
Local $aRet[$iCount]
For $i = 0 To $iCount-1
$aRet[$i] = GUICtrlRead($aData[$i][1])
Next
GUIDelete($_InputBox)
Return $aRet
Case 1
Local $aRet
For $i = 0 To $iCount-1
$aRet &= GUICtrlRead($aData[$i][1]) & $sDelim
Next
GUIDelete($_InputBox)Return StringTrimRight($aRet, 1)
[/autoit] [autoit][/autoit] [autoit]
EndSwitch
EndSwitch
WEnd
Opt("GUIOnEventMode", $OnEvent)
EndFunc ;==>_InputBox
;MrCreator========>
;Edited by SEuBo
Func _GUIInputSetRegExp($CtrlId, $sRegExp)
Local $iUbound = UBound($sInputs_Array)
ReDim $sInputs_Array[$iUbound + 1][2]
$sInputs_Array[$iUbound][0] = $CtrlId
$sInputs_Array[$iUbound][1] = $sRegExp
EndFunc ;==>_GUIInputSetRegExpFunc _Input_Changed($hWnd, $CtrlId, $iIndex)
[/autoit] [autoit][/autoit] [autoit]
ToolTip("")
If $sInputs_Array[$iIndex][1] = "" Then Return
Local $Read_Input = GUICtrlRead($CtrlId)
If StringRegExp($Read_Input, $sInputs_Array[$iIndex][1]) Then
GUICtrlSetData($CtrlId, StringRegExpReplace($Read_Input, $sInputs_Array[$iIndex][1], ''))Local $Gui_Get_Pos = WinGetPos($hWnd)
[/autoit] [autoit][/autoit] [autoit]
Local $Ctrl_Get_Pos = ControlGetPos($hWnd, "", $CtrlId)Local Const $SM_CYCAPTION = 4 ;Titelbar heigth
[/autoit] [autoit][/autoit] [autoit]
Local Const $SM_CXFIXEDFRAME = 7 ;Window border sizeLocal $X_Pos = $Gui_Get_Pos[0] + $Ctrl_Get_Pos[0] + $Ctrl_Get_Pos[2] + GetSystemMetrics($SM_CXFIXEDFRAME)
[/autoit] [autoit][/autoit] [autoit]
Local $Y_Pos = $Gui_Get_Pos[1] + $Ctrl_Get_Pos[1] + $Ctrl_Get_Pos[3] + GetSystemMetrics($SM_CYCAPTION)ToolTip($sToolTip_Text[0], $X_Pos, $Y_Pos, $sToolTip_Text[1], 3, 1 + 4)
[/autoit] [autoit][/autoit] [autoit]
DllCall("user32.dll", "int", "MessageBeep", "int", 0x0)
EndIf
EndFunc ;==>_Input_ChangedFunc WM_CLEAR_TOOLTIP($hWnd, $iMsg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
ToolTip("")
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_CLEAR_TOOLTIPFunc MY_WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
If $hWnd = 0 Or Not WinExists($hWnd) Then Return $GUI_RUNDEFMSGLocal $nNotifyCode = BitShift($wParam, 16)
[/autoit] [autoit][/autoit] [autoit]
Local $nID = BitAND($wParam, 0xFFFF)
Local Const $EN_CHANGE = 0x300
Local Const $EN_UPDATE = 0x400
Local Const $EN_SETFOCUS = 0x100
Local Const $EN_KILLFOCUS = 0x200For $i = 1 To UBound($sInputs_Array) - 1
[/autoit] [autoit][/autoit] [autoit]
If $nID = $sInputs_Array[$i][0] Then
Switch $nNotifyCode
Case $EN_UPDATE ;$EN_CHANGE
_Input_Changed($hWnd, $sInputs_Array[$i][0], $i)
Case $EN_SETFOCUS, $EN_KILLFOCUS
ToolTip("")
EndSwitch
ExitLoop
EndIf
NextReturn $GUI_RUNDEFMSG
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>MY_WM_COMMANDFunc GetSystemMetrics($Flag)
[/autoit]
Local $iRet = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $Flag)
Return $iRet[0]
EndFunc ;==>GetSystemMetrics
;<========== -
Also mit verzögerung und in notepad geht so:
[autoit]Dim $input[10]
[/autoit]
For $i = 0 To 9
$input[$i] = InputBox("Text", "Gib nen Text ein")
Next
Sleep(Floor(Random(1, 10))*1000)
Run("notepad.exe")
Sleep(300)
Send($input[Random(0, 9, 1)])Edit: Zu langsam
-
Floor kannst du dir sparen wenn du bei Random den 3ten parameter verwendest
Edit: was du ja bei deinem zweiten random eh gemacht hast wie ich grade seh
-
EditConstants.au3
GUIConstantsEx.au3Wie komm ich daran google findet auch nichts.
-
ie komm ich daran google findet auch nichts.
C:\Program Files\AutoIt3\Include\
Die sind vorinstalliert.
-
Ah hab ich auch gerade gesehen
SEuBo bei der inputbox bekomm ich einen Error in Zeile 5 -
[autoit]
#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]GUICreate(" Input Box 8 Felder", 320, 270, @DesktopWidth / 2 - 220, @DesktopHeight / 2 - 220)
[/autoit][autoit][/autoit][autoit]
$file = GUICtrlCreateInput("", 10, 5, 300, 20)
GUICtrlSetState(-1, $GUI_ACCEPTFILES)
$file2 = GUICtrlCreateInput("", 10, 35, 300, 20)
$file3 = GUICtrlCreateInput("", 10, 65, 300, 20)
$file4 = GUICtrlCreateInput("", 10, 95, 300, 20)
$file5 = GUICtrlCreateInput("", 10, 125, 300, 20)
$file6 = GUICtrlCreateInput("", 10, 155, 300, 20)
$file7 = GUICtrlCreateInput("", 10, 185, 300, 20)
$file8 = GUICtrlCreateInput("", 10, 215, 300, 20)
$btn = GUICtrlCreateButton("Ok", 40, 235, 60, 20)GUISetState()
[/autoit][autoit][/autoit][autoit]$msg = 0
[/autoit]
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $Btn
MsgBox(262144, '', ' 1 : ' & GUICtrlRead($file) & ' 2: ' & GUICtrlRead($file2) & ' 3: ' & GUICtrlRead($file3) & ' 4: ' & GUICtrlRead($file4) & ' 5: ' & GUICtrlRead($file5) & ' 6: ' & GUICtrlRead($file6) & ' 7: ' & GUICtrlRead($file7) & ' 8: ' & GUICtrlRead($file8))
EndSelect
WEnd
So hab ich mir das gedacht allerdings wüsste ich gerne wie ich eine Ausgabe in ein anderes Fenster mache.
Und wie man die exe Passwort schützt. Also wenn ich doppelklicke sowas wie: Type in Passwort :
Und nur wenn es das richtige PW ist öffnet sich die exe. -
Mit einem eigenen PW eine gabe GUI oder Inputbox und dann irgendein (am besten verschlüsselt) abgespeichertes Passwort mit dem eingegebenen vergleichen und dann (wenn eigenes GUI zur eingabe war, guidelete benutzen) das Porgramm starten.
Zum $gui_acceptfiles: Das musst du für jedes Input einstellen. -
Du keine Ahnung wie ich das am machen soll, wenn es mir jmd. ausnahmsweise vorkaut kann ichs verstehen und später richtig machen
-
Ok ein Besipiel fürs Inputbox Passwortabfragen:
[autoit]
[/autoit]
$pw="meinpw" ;Am besten in einer Datei verschlüsselt abspeichern, das solltest du schaffen.
;zum verschlüssel/entschlüsseln in #include <String.au3> funktion _stringencrypt benutzen
$eingabe=inputbox("eingabe","eingabe")
if $pw<>$eingabe then exit msgbox(0,"PW","PW falsch") -
Besser:
[autoit]$passwort = "passwort"
[/autoit]
$abfrage = InputBox("Abfrage","Bitte Passwort eingeben:","","*")
If $abfrage <> $passwort Then
MsgBox(0,"!","Passwort falsch")
Exit
EndIf -
Wusste gar nicht, dass man mit Inputbox "*" machen kann
-
Wie kann ich jetzt den Inhalt der Felder dauerhaft zufällig alle 2 Minuten ausgeben in ein Firefox Fenster ?
-
- Offizieller Beitrag
Und wir unterstützen hier Deinen Bot immer noch nicht!
Diesen Thread hier habe ich doch bereits geschlossen. Glaubst Du, dass Du uns ver**schen kannst?
[Thread closed]