Hilfe pls mit Input boxen : )

  • Hi

    Ich wollte mir ein Prog machen, das wenn ein Unbanannt - Editor offen ist, die eingaben aus insgesammt 10 Inputboxen sendet.

    z.B.: NUMPAD 1 = Hallo

    [autoit]

    #include <GUIConstants.au3>

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

    HotKeySet("{NUMPAD1}", "Send1")
    HotKeySet("{NUMPAD2}", "Send2")
    HotKeySet("{NUMPAD3}", "Send3")
    HotKeySet("{NUMPAD4}", "Send4")
    HotKeySet("{NUMPAD5}", "Send5")
    HotKeySet("{NUMPAD6}", "Send6")
    HotKeySet("{NUMPAD7}", "Send7")
    HotKeySet("{NUMPAD8}", "Send8")
    HotKeySet("{NUMPAD9}", "Send9")
    HotKeySet("{NUMPAD10}", "Send10")

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 322, 210, 255, 230)
    $Input1 = GUICtrlCreateInput("Input1", 16, 16, 137, 21)
    $Input2 = GUICtrlCreateInput("Input2", 16, 48, 137, 21)
    $Input3 = GUICtrlCreateInput("Input3", 16, 80, 137, 21)
    $Input4 = GUICtrlCreateInput("Input4", 16, 112, 137, 21)
    $Input5 = GUICtrlCreateInput("Input5", 16, 144, 137, 21)
    $Input6 = GUICtrlCreateInput("Input6", 168, 16, 137, 21)
    $Input7 = GUICtrlCreateInput("Input7", 168, 48, 137, 21)
    $Input8 = GUICtrlCreateInput("Input8", 168, 80, 137, 21)
    $Input9 = GUICtrlCreateInput("Input9", 168, 112, 137, 21)
    $Input10 = GUICtrlCreateInput("Input10", 168, 144, 137, 21)
    $Label1 = GUICtrlCreateLabel("© by Technoboy", 120, 184, 84, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Run("notepad.exe")
    WinWaitActive("Unbenannt - Editor")

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

    While 1
    Sleep(100)
    WEnd

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

    Func Send1()
    Send($Input1)
    EndFunc
    Func Send2()
    Send($Input2)
    EndFunc
    Func Send3()
    Send($Input3)
    EndFunc
    Func Send4()
    Send($Input4)
    EndFunc
    Func Send5()
    Send($Input5)
    EndFunc
    Func Send6()
    Send($Input6)
    EndFunc
    Func Send7()
    Send($Input7)
    EndFunc
    Func Send8()
    Send($Input8)
    EndFunc
    Func Send9()
    Send($Input9)
    EndFunc
    Func Send10()
    Send($Input10)
    EndFunc

    [/autoit]

    Das hab ich mir bis jetz so gedacht aber iwie geht das nicht : (

    Bitte um Hilfe

    Einmal editiert, zuletzt von DerAnfänger (20. Mai 2010 um 18:08)

  • ahh danke : )

    Ehm nur wenn ich halt das Prog offen hab, kann ich das nicht über das X obren rechts schliessen. Wie geht das?^^

  • Unten Rechts in der Taskleiste erscheint so ein AutoIt Symbol. Da musst du einfach mit der Rechten Maustaste draufdrücken ^^

    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"

  • Dann mach doch sowas rein:

    [autoit]

    HotKeySet("!b","_beenden")

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

    Func _beenden()
    Exit
    EndFunc

    [/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"

  • AHH Danke,

    klappt super : )

    So ehm nur jetz eine andere Frage^^ :

    Wie kann ich meine Inputs sichern?
    zb inner .txt datei? Sodass sie immer laden wenn ich das prog neu starte ?

  • Hui ehm ^^

    ich versteh net ganz wie ich das bei mir anwenden soll :O

    kannste mir da mal die Input 1 Box vorgeben?

  • Also, du guckst was in der Input drin ist und speicherst es:

    [autoit]

    $input1 = InputBox("Test","Test")
    IniWrite(@ScriptDir & "\settings.ini","Inputboxen","Input1", $input1)

    [/autoit]


    Später kannst du es dann mit IniRead auslesen.

  • Meine Version:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    HotKeySet("{NUMPAD1}", "Send1")
    HotKeySet("{NUMPAD2}", "Send2")
    HotKeySet("{NUMPAD3}", "Send3")
    HotKeySet("{NUMPAD4}", "Send4")
    HotKeySet("{NUMPAD5}", "Send5")
    HotKeySet("{NUMPAD6}", "Send6")
    HotKeySet("{NUMPAD7}", "Send7")
    HotKeySet("{NUMPAD8}", "Send8")
    HotKeySet("{NUMPAD9}", "Send9")
    HotKeySet("{NUMPAD10}", "Send10")

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

    Dim $Input[10]
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 322, 210, 255, 230)
    $Input[0] = GUICtrlCreateInput("Input1", 16, 16, 137, 21)
    $Input[1] = GUICtrlCreateInput("Input2", 16, 48, 137, 21)
    $Input[2] = GUICtrlCreateInput("Input3", 16, 80, 137, 21)
    $Input[3] = GUICtrlCreateInput("Input4", 16, 112, 137, 21)
    $Input[4] = GUICtrlCreateInput("Input5", 16, 144, 137, 21)
    $Input[5] = GUICtrlCreateInput("Input6", 168, 16, 137, 21)
    $Input[6] = GUICtrlCreateInput("Input7", 168, 48, 137, 21)
    $Input[7] = GUICtrlCreateInput("Input8", 168, 80, 137, 21)
    $Input[8] = GUICtrlCreateInput("Input9", 168, 112, 137, 21)
    $Input[9] = GUICtrlCreateInput("Input10", 168, 144, 137, 21)
    $Label = GUICtrlCreateLabel("© by Technoboy", 120, 184, 84, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Run("notepad.exe")
    WinWaitActive("Unbenannt - Editor")

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

    While 1
    IF GuiGetMsg() = $GUI_EVENT_CLOSE Then
    For $i = 0 To 9
    IniWrite(@ScriptDir & "\test.ini","section",$i,GUICtrlRead($Input[$i]))
    Next
    Exit
    EndIf
    WEnd

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

    Func Send1()
    Send($Input[0])
    EndFunc
    Func Send2()
    Send($Input[1])
    EndFunc
    Func Send3()
    Send($Input[2])
    EndFunc
    Func Send4()
    Send($Input[3])
    EndFunc
    Func Send5()
    Send($Input[4])
    EndFunc
    Func Send6()
    Send($Input[5])
    EndFunc
    Func Send7()
    Send($Input[6])
    EndFunc
    Func Send8()
    Send($Input[7])
    EndFunc
    Func Send9()
    Send($Input[8])
    EndFunc
    Func Send10()
    Send($Input[9])
    EndFunc

    [/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"

  • ehm jetz sender er nur noch zahlen :wacko:

    Und wie speichert man das ?
    Aber danke für die nette Hilfe : )

  • Upps...
    Na ,ja, so klappts:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    HotKeySet("{NUMPAD1}", "Send1")
    HotKeySet("{NUMPAD2}", "Send2")
    HotKeySet("{NUMPAD3}", "Send3")
    HotKeySet("{NUMPAD4}", "Send4")
    HotKeySet("{NUMPAD5}", "Send5")
    HotKeySet("{NUMPAD6}", "Send6")
    HotKeySet("{NUMPAD7}", "Send7")
    HotKeySet("{NUMPAD8}", "Send8")
    HotKeySet("{NUMPAD9}", "Send9")
    HotKeySet("{NUMPAD10}", "Send10")

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

    Dim $Input[10]
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 322, 210, 255, 230)
    $Input[0] = GUICtrlCreateInput("Input1", 16, 16, 137, 21)
    $Input[1] = GUICtrlCreateInput("Input2", 16, 48, 137, 21)
    $Input[2] = GUICtrlCreateInput("Input3", 16, 80, 137, 21)
    $Input[3] = GUICtrlCreateInput("Input4", 16, 112, 137, 21)
    $Input[4] = GUICtrlCreateInput("Input5", 16, 144, 137, 21)
    $Input[5] = GUICtrlCreateInput("Input6", 168, 16, 137, 21)
    $Input[6] = GUICtrlCreateInput("Input7", 168, 48, 137, 21)
    $Input[7] = GUICtrlCreateInput("Input8", 168, 80, 137, 21)
    $Input[8] = GUICtrlCreateInput("Input9", 168, 112, 137, 21)
    $Input[9] = GUICtrlCreateInput("Input10", 168, 144, 137, 21)
    $Label = GUICtrlCreateLabel("© by Technoboy", 120, 184, 84, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Run("notepad.exe")
    WinWaitActive("Unbenannt - Editor")

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

    While 1
    IF GuiGetMsg() = $GUI_EVENT_CLOSE Then
    For $i = 0 To 9
    IniWrite(@ScriptDir & "\test.ini","section",$i,GUICtrlRead($Input[$i]))
    Next
    Exit
    EndIf
    WEnd

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

    Func Send1()
    Send(GUICtrlRead($Input[0]))
    EndFunc
    Func Send2()
    Send(GUICtrlRead($Input[1]))
    EndFunc
    Func Send3()
    Send(GUICtrlRead($Input[2]))
    EndFunc
    Func Send4()
    Send(GUICtrlRead($Input[3]))
    EndFunc
    Func Send5()
    Send(GUICtrlRead($Input[4]))
    EndFunc
    Func Send6()
    Send(GUICtrlRead($Input[5]))
    EndFunc
    Func Send7()
    Send(GUICtrlRead($Input[6]))
    EndFunc
    Func Send8()
    Send(GUICtrlRead($Input[7]))
    EndFunc
    Func Send9()
    Send(GUICtrlRead($Input[8]))
    EndFunc
    Func Send10()
    Send(GUICtrlRead($Input[9]))
    EndFunc

    [/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"

  • @Cartan: wenn du schon ein array beispiel machst würd ich auch die vorteile ausnutzen ;)

    quick and dirty hätt ich das mal so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Dim $Input[10]

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

    For $i = 1 To 10
    HotKeySet("{NUMPAD" & $i & "}", "Sendtext")
    Next
    $Form1 = GUICreate("Form1", 322, 210, 255, 230)
    For $i = 0 To 4
    $Input[$i] = GUICtrlCreateInput("Input" & $i, 16, 16 + $i * 32, 137, 21)
    Next
    For $i = 5 To 9
    $Input[$i] = GUICtrlCreateInput("Input" & $i, 168, 16 + ($i - 5) * 32, 137, 21)
    Next
    $Label = GUICtrlCreateLabel("© by Technoboy", 120, 184, 84, 17)
    GUISetState(@SW_SHOW)

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

    $ini = IniReadSection(@ScriptDir & "\test.ini", "section")
    If $ini[0][0] >= 10 Then
    For $i = 1 To 10
    GUICtrlSetData($Input[$i-1], $ini[$i][1])
    Next
    EndIf

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

    Run("notepad.exe")
    WinWaitActive("Unbenannt - Editor")

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

    While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then
    For $i = 0 To 9
    IniWrite(@ScriptDir & "\test.ini", "section", $i, GUICtrlRead($Input[$i]))
    Next
    Exit
    EndIf
    WEnd

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

    Func Sendtext()
    $zahl = Stringtrimright(StringTrimLeft(@HotKeyPressed, 7), 1)
    Send(GUICtrlRead($Input[$zahl]))
    EndFunc ;==>Send1

    [/autoit]
  • Ich wollts eigentlich einigermaßen verständlich rüberbringen ^^
    Anfänger reagieren i-wie allergisch auf Arrays und ihre möglichkeiten :D

    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"

  • Anfänger reagieren i-wie allergisch auf Arrays und ihre möglichkeiten :D

    jup da geb ich dir recht.
    aber dann am besten ganz rauslassen ;)

    ging mir anfangs auch so, nach der art: wieso muss ich jetz auf einmal [1] machen!?!^^

  • Hi, man kann die Initialisierung in einer Schleife zusammenfassen

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Dim $Input[10]

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

    $Form1 = GUICreate("Form1", 322, 210, 255, 230)
    $Label = GUICtrlCreateLabel("© by Technoboy", 120, 184, 84, 17)
    GUISetState(@SW_SHOW)

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

    For $i = 0 To 9 ;hotkeys und inputs initialisieren, ini auslesen
    HotKeySet("{NUMPAD" & $i & "}", "Sendtext") ;hotkey setzen auf function "sendtext"
    $Input[$i] = GUICtrlCreateInput("Input" & $i, 16 + (150 * ($i > 4)), 16 + Mod($i, 5) * 32, 137, 21) ;input an position setzen
    $ini = IniRead(@ScriptDir & "\test.ini", "section", $i, "") ;inidatei lesen und ...
    GUICtrlSetData($Input[$i], $ini) ;...wert in input schreiben
    Next

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

    Run("notepad.exe") ;editor starten

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

    Do ;solange warten bis...
    Until GUIGetMsg() = $GUI_EVENT_CLOSE ;...programmfenster geschlossen wird
    For $i = 0 To 9 ;alle aktuellen inputwerte in die ini schreiben
    IniWrite(@ScriptDir & "\test.ini", "section", $i, GUICtrlRead($Input[$i]))
    Next
    Exit ;ende

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

    Func Sendtext() ;hotkey wurde gedrückt
    if not WinExists("[CLASS:Notepad]") then Run("notepad.exe") ;editor starten falls zwischendurch beendet
    winactivate("[CLASS:Notepad]") ;editorfenster aktivieren
    WinWaitActive("[CLASS:Notepad]") ;solange warten bis editorfenster aktiv
    $zahl = StringTrimRight(StringTrimLeft(@HotKeyPressed, 7), 1) ;hotkey ermitteln
    Send(GUICtrlRead($Input[$zahl])) ;input an editor senden
    EndFunc ;==>Sendtext

    [/autoit]

    Generell ist es nicht vorteilhaft, 200-300 Zeilen Code zu nutzen, der in 5 Zeilen erledigt wäre. Sollte später einmal eine Änderung gemacht werden, bedeutet das den GAU. Auch die Wartung ist alles andere als einfach, Bugs in 30 Bildschirmseiten mit völlig überflüssigem Geschreibsel zu suchen dauert immer sehr lange!
    Jemand, der den Code nicht kennt und das Script nur in kleinen Teilen erweitern/verbessern möchte, wird abgeschreckt....bzw hat viel Arbeit vor sich^^, vor allem, da das allerwichtigste im Script, nämlich die KOMMENTARE völlig fehlen!