Erster Versuch , und schon gleich am Anfang schwierigkeite. Benutzereingaben

  • Hallo,

    Ich habe das Problem, dass sich bei mir keine Box öffnet.

    Ich wollte mal versuchen Automatisch einen Druckertreiber installieren zu lassen mit eigenständiger eingabe der Ip Adresse.

    Ich komme bis zum Eingeben der IP Adresse, jedocj alle weiteren Sachen die ich bis hierher versucht habe schlugen Fehl.
    Hier war schonmal ein ähnliches Thema mit Benutzereingaben übernehmen.

    Der Quelltext bis dato ( Win 7 )

    [autoit]

    run("control printers")
    WinWaitActive("Geräte und Drucker")
    Sleep(2000)
    Send("!d r" )
    Sleep(6000)
    WinWaitActive("Drucker hinzufügen")
    Send("!l" )
    Sleep(3000)
    Send("!n" )
    SLeep(1000)
    Send("{TAB}")
    SLeep(500)
    Send("{DOWN}")
    SLeep(500)
    Send("!w")
    SLeep(1000)
    ;ab hier mit einem Versuch aus dem Forum
    GuiCreate("Size")
    $vsize=GUICtrlCreateInput("1", 90,10,50,20,$ES_NUMBER)
    $OK=GUICtrlCreateButton("OK", 40,100,80,20)
    $Cancel=GUICtrlCreateButton("Cancel", 150,100,80,20)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $OK
    Local $eingabe = GUICtrlRead($vsize)

    _senden($eingabe)


    Case $Cancel
    Exit
    EndSwitch
    Sleep(10)
    WEnd

    [/autoit]

    Für jeden Tip wie ich das anders machen kann bin ich dankbar :thumbup:

  • Was war nun die Frage? In deinem Script fehlt die Funktion _senden()
    Wolltest du nun wissen was in der Funktion stehen sollte oder hast du bereits diese Funktion geschrieben und willst wissen warum diese nicht funktioniert?
    Im letzteren Fall solltest du diese mal posten.

    Allgemeine Anmerkung zum Script:

    Ich bin mir sehr sicher, dass du die meisten Dinge antatt mit send() auch mit controlsend() realisieren könntest was wesentlich zuverlässiger arbeitet. Lies dazu am besten in der Hilfe unter "Window Managment->Controls" nach. Die notwendigen Informationen zu den einzelnen Controls kann man mit au3info auslesen (im Sciteeditor unter Tools).
    Ausserdem solltest du glaube ich das Local aus der while Schleife entfernen, es genügt wenn die Variable einmal am Scriptanfang initialisiert wird und dann in der Schleife nur noch einen Wert zugewiesen bekommt.

  • Hallo Himmelsboote,

    [OT]welche Nachrichten hast du denn?, oder machst du es wie Aloysius? [/OT]

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die deutsche Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Problem, schau dir dazu [ gelöst ] text an minimiertes fenster an und lies die dort empfohlenen Seiten, du musst evtl. auch die nachfolgenden Posts lesen,

    mfg autoBert

  • Danke euch.

    Ich hab es jetzt mal anders versucht.
    Nun kommt die Eingabebox.
    Jetzt würde ich gerne das eingegebene Lesen und in meinem Fall in die "TCP/IP Adressfeld" eingeben lassen.
    Nur Egal was ich mache es funktioniert nicht.

    [autoit]


    $answer = InputBox("IP Adresse", "Bitte geben Sie die IP Adresse ihres Gerätes ein...?", "xxx.xxx.xxx.xxx", "", _
    -1, -1, 0, 0)

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

    If $answer="" Then
    ControlSend("Drucker hinzufügen", "", "[CLASS:Edit; INSTANCE:1]",
    Exit
    Else ; andernfalls tue

    Exit
    EndIf

    [/autoit]

    Für ein weiteren Tip wäre ich dankbar.
    Übrigens habt ihr es richtig gemerkt. Das ist mein erster kleiner Versuch.


    Grüße

  • Hast du vlt. einfach den Parameter vergessen, zu übergeben?

    [autoit]

    $answer = InputBox("IP Adresse", "Bitte geben Sie die IP Adresse ihres Gerätes ein...?", "xxx.xxx.xxx.xxx", "", _
    -1, -1, 0, 0)

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

    If $answer="" Then
    ControlSend("Drucker hinzufügen", "", "[CLASS:Edit; INSTANCE:1]",$answer)
    Exit
    #cs ;<-- Else ist nicht nötig.
    Else ; andernfalls tue

    Exit
    #ce
    EndIf

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Danke dir L3viathan jedoch war das auch erfolglos,

    Ich gehe mal davon aus, dass ich grundlegend schon was falsch mache und es mit der input funktion nicht geht.
    noch ne Idee?

    Hier mal ein Auszug aus dem info tool , wo der Input hingehen soll.


    >>>> Window <<<<
    Title: Drucker hinzufügen
    Class: NativeHWNDHost
    Position: 486, 200
    Size: 628, 460
    Style: 0x96C80080
    ExStyle: 0x00040100
    Handle: 0x000000000013053A

    >>>> Control <<<<
    Class: Edit
    Instance: 1
    ClassnameNN: Edit1
    Name:
    Advanced (Class): [CLASS:Edit; INSTANCE:1]
    ID: 4690
    Text:
    Position: 218, 144
    Size: 375, 23
    ControlClick Coords: 40, 11
    Style: 0x50010080
    ExStyle: 0x00000204
    Handle: 0x0000000000060712

    >>>> Mouse <<<<
    Position: 752, 385
    Cursor ID: 0
    Color: 0xFFFFFF

    >>>> StatusBar <<<<

    >>>> ToolsBar <<<<

    >>>> Visible Text <<<<
    &Weiter
    Abbrechen
    IP-Adresse oder Hostnamen eingeben
    &Gerätetyp:
    TCP/IP-Gerät
    &Hostname oder IP-Adresse:
    Anschluss&name:
    Den Drucker abfragen und den zu verwendenden Treiber &automatisch auswählen


    >>>> Hidden Text <<<<
    &Fertig stellen
    Voreinführungsseite
    Lokaler oder Netzwerkdrucker
    Lokalen Drucker oder Netzwerkdrucker als &Administrator hinzufügen
    Einen &lokalen Drucker hinzufügen
    Einen &Netzwerk-, Drahtlos- oder Bluetoothdrucker hinzufügen
    Port auswählen
    Ein Druckeranschluss ist eine Verbindung, die es dem Computer ermöglicht, Informationen mit einem Drucker auszutauschen.
    &Vorhandenen Anschluss verwenden:
    &Neuen Anschluss erstellen:
    LPT1: (Druckeranschluss)
    Anschlusstyp:
    Standard TCP/IP Port
    Druckerdaten werden abgerufen...

  • Das kann auch nicht funktionieren. Die if Bedingung ist falsch, denn es wird nur was gemacht wenn du nichts in die inputbox eingibst und wenn du nix eingibst wird auch nix ins Feld eingefügt, weil du ja nix reingeschrieben hast. ^^
    Um das eingegebene einzufügen muss die controlsend Zeile in den else Zweig, oder alternativ die if bedingung zu " $answer <> "" " umformulieren