Hilfe - Verzweifle mit der Zwischenablage

  • Hallo Autoit Gemeinde

    ich mache jetzt seit 2 Tagen an einer Zeile rum :cursing:

    Was ist hier falsch

    [autoit]

    MouseClick("left", 104, 100, 1, 1); Wir wechseln auf den Reiter Fakturierung
    ClipPut(""); Zwischenablage wird geleert
    Sleep($varSleep); Warte X Millisekunden - aktuell ca. 350
    Send("{RIGHT}"); gehe eine Stelle nach rechts
    Send("^C"); Drücke STRG + C (kopieren)
    Local $bak = ClipGet(); Lese die Zwischenablage
    MsgBox(0, "Clipboard contains:", $bak); Gebe den Inhalt der Zwischenablage in einer Messagebox aus
    _Stop()

    [/autoit]

    ; Beende Script

    Habe auch ein kleines "c" schon versucht. In dem auszulesenden INPUT Feld aus Microsoft Navision steht 2 oder 3 Buchstaben.
    Wenn ich das ganze via Tastatur nachspiele, habe ich den richtigen Wert in der Zwischenablage.
    Wenn ich das mit Autoit mache, ist die Zwischenablage leer

    Bitte dringend um Hilfe, Danke !!

  • Ich hab leider kein Microsoft Navision, aber kann man das Feld nicht mit

    [autoit]

    ControlGetText ( "title", "text", controlID )

    [/autoit]

    auslesen?
    das würde die sache wesentlich einfacher machen und ohne Send() befehl auskommen

    Spoiler anzeigen
    [autoit]

    MouseClick("left", 104, 100, 1, 1); Wir wechseln auf den Reiter Fakturierung
    ClipPut(""); Zwischenablage wird geleert
    Sleep($varSleep); Warte X Millisekunden - aktuell ca. 350

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

    $text=ControlGetText("title" ,"text" , controlID)
    ClipPut($text)

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

    Local $bak = ClipGet(); Lese die Zwischenablage
    MsgBox(0, "Clipboard contains:", $bak); Gebe den Inhalt der Zwischenablage in einer Messagebox aus
    _Stop()

    [/autoit]
  • Du markierst doch in deinem Script gar nichts, oder ?

    Irgendwie fehlt mir dort ein "^a" oder ein "{SHIFTDOWN}" vor dem "{RIGHT}". Oder ich verstehe deinen Ansatz nicht.

    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"

  • [quote='bollen','index.php?page=Thread&postID=310367#post310367']Ich hab leider kein Microsoft Navision, aber kann man das Feld nicht mit

    [autoit]

    ControlGetText ( "title", "text", controlID )

    [/autoit]

    auslesen?

    Leider scheint das bei Navision nicht zu gehen. Habe Gestern schon einen anderen Thread geöffnet, wo ich festgestellt habe, das man bei Navision nur Änderungen in den Mauspositionen und Farben feststellen kann. Die einzelnen Labels und Inputfelder kann man nicht auslesen

  • Du markierst doch in deinem Script gar nichts, oder ?

    Irgendwie fehlt mir dort ein "^a" oder ein "{SHIFTDOWN}" vor dem "{RIGHT}". Oder ich verstehe deinen Ansatz nicht.

    Wenn ich "{RIGHT}" drücke, dann ist automatisch der Inhalt "blau" markiert. Ich werde morgen mal den Ansatz des "selbst markieren" versuchen, eventuell auch über die Maus, hauptsache es funktioniert zuverlässig.

    vielen Dank erst mal

    Gruss Hassan

  • Guten Morgen,

    wie versprochen versuche ich die Aktion gerade mit Mausaktionen zu bewältigen, aber das haut auch nicht hin.
    Hier mal der Codesnipsel

    [autoit]

    WinActivate("FuM - Microsoft Business Solutions-Navision")
    Sleep(500)
    MouseClick("left", 104, 100, 1, 1); Wir wechseln auf den Reiter Fakturierung
    ClipPut("")
    Sleep(350)
    Send("{RIGHT}")
    MouseClick("left", 555, 125, 1, 1); Wir klicken in das Feld, welches wir auslesen
    MouseDown("left"); Linke Maustaste wird dauerhaft gedrückt
    MouseMove(485, 125); Maus fährt an neue Koordinaten und markiert dabei den Text unterhalb des Mauscursors
    MouseUp("left"); Linke Maustaste wird wieder losgelassen
    ;~ MouseMove(500, 125)
    ;~ MouseClick("right", 500, 125, 1, 1); Wir klicken in das Feld, welches wir auslesen
    ;~ Send("{DOWN 2}")
    ;~ Send("{ENTER}")
    ;~ Send("^C"); Wert wird in die Zwischenablage geschrieben
    Local $bak = ClipGet()
    MsgBox(0, "Clipboard contains:", $bak)
    Exit

    [/autoit]


    Wenn ich das live mit der echten Maus mache, dann ist das Feld markiert. Mit Autoit wird es nicht markiert (also nach Zeile 10). Kann das eventuell auch an Windows 8 liegen ?

  • Probiere doch mal im Feld ein MouseClick(....,3).
    Auch ausreichend Zeit zwischen den Aktionen ist m.E. erfolgreich.

    [autoit]


    MouseClick("left", 555, 125, 3) ; Wir klicken in das Feld, welches wir auslesen
    Sleep(40)
    Send ("^c")
    Sleep (600)
    $bak=ClipGet()

    [/autoit]