input eingabe an send anweisung schicken

  • hi und hallo. folgendes problem. ich bastel mir grad eine kleine toolbar mit allem was man so brauch. also ipconfog, ping etc auf knopfdruck. beim ping habe ich ein eingabefeld in dem man dann die anzupingende ip eingeben soll und dann per button absenden. ich versuche im script die ip an die variable $Input 1 zu übergeben. aber irgendwie weiß ich dann nicht wie ich das ganze dann an die send anweisung übergebe. anbei sende ich euch mal mein script. ich hoffe ihr könnt mir da weiterhelfen.

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Adminbar", 155, 454, 494, 158)
    GUISetBkColor(0x000000)
    GUISetCursor (3)

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

    $Button2 = GUICtrlCreateButton("Beenden", 24, 420, 113, 25, BitOR($BS_CENTER,$BS_FLAT), $WS_EX_CLIENTEDGE)

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

    $Button1 = GUICtrlCreateButton("ipconfig /all", 24, 56, 113, 25, BitOR($BS_CENTER,$BS_FLAT), $WS_EX_CLIENTEDGE)
    GUICtrlSetTip(-1, "ipconfig Befehl")
    $Label1 = GUICtrlCreateLabel("Tools", 40, 8, 66, 33)
    GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xC0C0C0)
    $Input1 = GUICtrlCreateInput("Adresse", 8, 128, 137, 21)
    $Label2 = GUICtrlCreateLabel("Bitte geben sie eine IP ein:", 8, 112, 138, 17)
    GUICtrlSetColor(-1, 0xFFFFFF)
    $Button3 = GUICtrlCreateButton("IP anpingen", 8, 152, 137, 25, 0)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Send( "{lwin}")
    Send("{u}")
    WinWait("Ausführen","")
    If Not WinActive("Ausführen","") Then WinActivate("Ausführen","")
    WinWaitActive("Ausführen","")
    Send("cmd{ENTER}")
    WinWait("C:\WINDOWS\system32\cmd.exe","")
    Send("ipconfig{SPACE}{SHIFTDOWN}7{SHIFTUP}all{ENTER}")

    Case $Button2
    Exit

    Case $Button3
    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Send( "{lwin}")
    Send("{u}")
    WinWait("Ausführen","")
    If Not WinActive("Ausführen","") Then WinActivate("Ausführen","")
    WinWaitActive("Ausführen","")
    Send("cmd{ENTER}")
    WinWait("C:\WINDOWS\system32\cmd.exe","")
    Send("ping{space}")
    Send($Input1)
    EndSwitch
    WEnd

    [/autoit]

    3 Mal editiert, zuletzt von Dr.House™ (5. Mai 2009 um 12:13)

  • Fehlt hinter dem letzetn Send($input1) nicht noch ein Send("{enter}") ?

  • ja, ok. das vergaß ich nur bei der letzten änderung. aber er sendet dann nur $Input1 als String. aber er soll ja die ip auslesen, die ich ins eingabefeld eingebe und dies an die variable $Input1 übergeben.:)

  • Da fehlt einiges. Wie wäre es mit Testen vor dem Posten !

    Zeile 61 müsste wohl wie folgt aussehen: Send(GUICtrlRead($Input1) & "{ENTER}")

    Man kann aber den Befehl auch direkt per RUN starten, siehe hier:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Adminbar", 155, 454, 494, 158)
    GUISetBkColor(0x000000)
    GUISetCursor (3)

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

    $Button2 = GUICtrlCreateButton("Beenden", 24, 420, 113, 25, BitOR($BS_CENTER,$BS_FLAT), $WS_EX_CLIENTEDGE)

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

    $Button1 = GUICtrlCreateButton("ipconfig /all", 24, 56, 113, 25, BitOR($BS_CENTER,$BS_FLAT), $WS_EX_CLIENTEDGE)
    GUICtrlSetTip(-1, "ipconfig Befehl")
    $Label1 = GUICtrlCreateLabel("Tools", 40, 8, 66, 33)
    GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0xC0C0C0)
    $Input1 = GUICtrlCreateInput("Adresse", 8, 128, 137, 21)
    $Label2 = GUICtrlCreateLabel("Bitte geben sie eine IP ein:", 8, 112, 138, 17)
    GUICtrlSetColor(-1, 0xFFFFFF)
    $Button3 = GUICtrlCreateButton("IP anpingen", 8, 152, 137, 25, 0)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button1
    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Send( "{lwin}")
    Send("{u}")
    WinWait("Ausführen","")
    If Not WinActive("Ausführen","") Then WinActivate("Ausführen","")
    WinWaitActive("Ausführen","")
    Send("cmd{ENTER}")
    WinWait("C:\WINDOWS\system32\cmd.exe","")
    Send("ipconfig{SPACE}{SHIFTDOWN}7{SHIFTUP}all{ENTER}")

    Case $Button2
    Exit

    Case $Button3
    ; Opt("WinWaitDelay",100)
    ; Opt("WinTitleMatchMode",4)
    ; Opt("WinDetectHiddenText",1)
    ; Send( "{lwin}")
    ; Send("{u}")
    ; WinWait("Ausführen","")
    ; If Not WinActive("Ausführen","") Then WinActivate("Ausführen","")
    ; WinWaitActive("Ausführen","")
    ; Send("cmd{ENTER}")
    ; WinWait("C:\WINDOWS\system32\cmd.exe","")
    ; Send("ping{space}")
    ; Send(GUICtrlRead($Input1) & "{ENTER}")
    $rueckgabe = ""
    $pid = Run("ping " & GUICtrlRead($Input1) ,"",@SW_HIDE,6)
    While 1
    ; Rückgabe auslesen
    If StdOutRead($pid,True) Then $rueckgabe &= StdOutRead($pid)
    If StdErrRead($pid,True) Then $rueckgabe &= StdErrRead($pid)
    ; bei Fehler ist der Process beendet
    If @error Then ExitLoop
    ; und warten, oder wollen wir den Rechner 100% auslasten
    Sleep(100)
    Wend
    Msgbox(0,"",$rueckgabe)

    EndSwitch
    WEnd

    [/autoit]

    Und bei "Ping" wie in diesem Beispiel, gäbe es auch noch die Möglichkeit mit dem AutoIt-Ping-Befehl:

    [autoit]

    Ping()

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • ohhh mensch..... asche auf mein haupt. daran habe ich einfach nicht gedacht die variable so zu übergeben.
    vielen vielen dank für die schnelle hilfe. :)

  • So. ic hoffe ich werde nun nicht gesteinigt. bin grad dabei mein ganzes skript umzukrempeln.
    und diesmal soll die IP in das spezielle IP Feld eingetragen werden. Allerdings wird beim auslesen entweder eine Null angezeigt oder Kauderwelsch. Muss ich das nun wieder anders auslesen???
    Anbei mein aktuelles Skript:

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiIPAddress.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

    $Form1 = GUICreate("Admin Sidebar", 133, 479, 201, 120, 0, BitOR($WS_EX_TRANSPARENT,$WS_EX_WINDOWEDGE))
    GUISetBkColor(0xFFFFFF)
    $Label1 = GUICtrlCreateLabel("Admin", 32, 8, 64, 34)
    GUICtrlSetFont(-1, 16, 800, 0, "Comic Sans MS")
    $Label2 = GUICtrlCreateLabel("Toolbar", 24, 40, 81, 34)
    GUICtrlSetFont(-1, 16, 800, 0, "Comic Sans MS")
    $Group1 = GUICtrlCreateGroup("IP -Tools", 8, 72, 113, 217)
    $Button1 = GUICtrlCreateButton("ipconfig /all", 16, 128, 97, 25, $BS_CENTER, $WS_EX_CLIENTEDGE)
    $IPAddress1 = _GUICtrlIpAddress_Create($Form1, 16, 201, 97, 25, -1, $WS_EX_STATICEDGE)
    _GUICtrlIpAddress_Set($IPAddress1, "0.0.0.0")
    $Button2 = GUICtrlCreateButton("ip anpingen", 16, 227, 97, 25, $BS_CENTER, $WS_EX_CLIENTEDGE)
    $Button3 = GUICtrlCreateButton("ip traceroute", 16, 253, 97, 25, $BS_CENTER, $WS_EX_CLIENTEDGE)
    $Button4 = GUICtrlCreateButton("WAN IP anzeigen", 16, 96, 97, 25, $BS_CENTER, $WS_EX_CLIENTEDGE)
    $Label4 = GUICtrlCreateLabel("Hier IP eingeben:", 24, 184, 86, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label3 = GUICtrlCreateLabel("dummy", 24, 459, 78, 17)
    $Button5 = GUICtrlCreateButton("Programm beenden", 8, 424, 111, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    Run("C:\WINDOWS\system32\cmd.exe")
    WinWait("C:\WINDOWS\system32\cmd.exe","")
    Send("ipconfig{SPACE}{SHIFTDOWN}7{SHIFTUP}all{ENTER}")

    Case $Button2
    run("C:\WINDOWS\system32\cmd.exe")
    WinWait("C:\WINDOWS\system32\cmd.exe","")
    Send("ping{space}" & GUICtrlRead($IPAddress1) & "{ENTER}")

    EndSwitch
    WEnd

  • Die Tag's "SPOILER" und "AutoIT" im Editor dieses Forums, können die Lesbarkeit der Scripte deutlich erhöhen !

    Tschau nur so sieht es doch besser aus, oder:

    Spoiler anzeigen
    [autoit]

    Send("ping{space}" & _GUICtrlIpAddress_Get($IPAddress1) & "{ENTER}")

    [/autoit]

    Und wenn man obige Zeile zum Auslesen nimmt, funktioniert es auch. Wenn Du spezielle Funktionen wie in diesem Fall "_GUICtrlIpAddress_Create()" benutzt, lies doch in der Hilfe auch gleich nach, wie man an der Wert des Controls kommt. Dort hab ich es nämlich auch her...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"