Input Box

  • 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.

  • 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
    und dann mit Random einen zufälligen Array ausgeben.
    Beispiel:

    [autoit]

    Dim $input[10]
    For $i = 0 To 9
    $input[$i] = InputBox("Text", "Gib nen Text ein")
    Next
    MsgBox(0, "Test", $input[Random(0, 9, 1)])

    [/autoit]

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • 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>
    #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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Array Rückgabe
    $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

    [/autoit]
    _InputBox.au3
    [autoit]

    #include-once
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sInputs_Array[1][2]

    [/autoit] [autoit][/autoit] [autoit]

    If Not IsDeclared("WM_COMMAND") Then Global Const $WM_COMMAND = 0x0111
    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 = 0x0204

    [/autoit] [autoit][/autoit] [autoit]

    Global $sToolTip_Text[2] = ["You can only type certain characters.", "Unacceptable Character:"]

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    GUIRegisterMsg($WM_MOVE, "WM_CLEAR_TOOLTIP")
    GUIRegisterMsg($WM_LBUTTONDOWN, "WM_CLEAR_TOOLTIP")
    GUIRegisterMsg($WM_RBUTTONDOWN, "WM_CLEAR_TOOLTIP")

    [/autoit] [autoit][/autoit] [autoit]

    Func _InputBox($iCount, $sTitle, $sText, $sDefault, $iRows = 1, $sRegExp = "", $iMode = 0, $sDelim = "|")
    ;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)

    [/autoit] [autoit][/autoit] [autoit]

    Return StringTrimRight($aRet, 1)
    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 ;==>_GUIInputSetRegExp

    [/autoit] [autoit][/autoit] [autoit]

    Func _Input_Changed($hWnd, $CtrlId, $iIndex)
    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], ''))

    [/autoit] [autoit][/autoit] [autoit]

    Local $Gui_Get_Pos = WinGetPos($hWnd)
    Local $Ctrl_Get_Pos = ControlGetPos($hWnd, "", $CtrlId)

    [/autoit] [autoit][/autoit] [autoit]

    Local Const $SM_CYCAPTION = 4 ;Titelbar heigth
    Local Const $SM_CXFIXEDFRAME = 7 ;Window border size

    [/autoit] [autoit][/autoit] [autoit]

    Local $X_Pos = $Gui_Get_Pos[0] + $Ctrl_Get_Pos[0] + $Ctrl_Get_Pos[2] + GetSystemMetrics($SM_CXFIXEDFRAME)
    Local $Y_Pos = $Gui_Get_Pos[1] + $Ctrl_Get_Pos[1] + $Ctrl_Get_Pos[3] + GetSystemMetrics($SM_CYCAPTION)

    [/autoit] [autoit][/autoit] [autoit]

    ToolTip($sToolTip_Text[0], $X_Pos, $Y_Pos, $sToolTip_Text[1], 3, 1 + 4)
    DllCall("user32.dll", "int", "MessageBeep", "int", 0x0)
    EndIf
    EndFunc ;==>_Input_Changed

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_CLEAR_TOOLTIP($hWnd, $iMsg, $wParam, $lParam)
    ToolTip("")
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_CLEAR_TOOLTIP

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    If $hWnd = 0 Or Not WinExists($hWnd) Then Return $GUI_RUNDEFMSG

    [/autoit] [autoit][/autoit] [autoit]

    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0xFFFF)
    Local Const $EN_CHANGE = 0x300
    Local Const $EN_UPDATE = 0x400
    Local Const $EN_SETFOCUS = 0x100
    Local Const $EN_KILLFOCUS = 0x200

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($sInputs_Array) - 1
    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
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

    [/autoit] [autoit][/autoit] [autoit]

    Func GetSystemMetrics($Flag)
    Local $iRet = DllCall('user32.dll', 'int', 'GetSystemMetrics', 'int', $Flag)
    Return $iRet[0]
    EndFunc ;==>GetSystemMetrics
    ;<==========

    [/autoit]
  • Also mit verzögerung und in notepad geht so:

    [autoit]

    Dim $input[10]
    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)])

    [/autoit]

    Edit: Zu langsam :)

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • [autoit]

    #include <GUIConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    GUICreate(" Input Box 8 Felder", 320, 270, @DesktopWidth / 2 - 220, @DesktopHeight / 2 - 220)
    $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)

    [/autoit][autoit][/autoit][autoit]

    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    $msg = 0
    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

    [/autoit]


    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]


    $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")

    [/autoit]
  • Besser:

    [autoit]

    $passwort = "passwort"
    $abfrage = InputBox("Abfrage","Bitte Passwort eingeben:","","*")
    If $abfrage <> $passwort Then
    MsgBox(0,"!","Passwort falsch")
    Exit
    EndIf

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Wie kann ich jetzt den Inhalt der Felder dauerhaft zufällig alle 2 Minuten ausgeben in ein Firefox Fenster ?