Programm Maussteuerung

  • SO, hallo erstmal,


    ich habe mal eine allgemeine Frage. Bezüglich meines Screenshot Projektes wurde mir nun zur Kenntniss gebracht, dass nicht beide Fenster gleichzeitig verfügbar gemacht werden können. Da das Programm, welchges observiert werden soll schon betagter ist , und über keinerlei Hotkey Steuerung verfügt, muss über ein grosses Menu mit grafischen Buttons erst 2 mal ein Klick ausgeführt werden um in die entsprechenden Fenster zu gelangen.



    Nun die Frage, würde sich so etwas auch in Autoit simulieren lassen, vielleicht hab Ihr ja schon mal so etwas gesehen oder habt Beispiele dazu, ich denke mal AutoIt kann so etwas.



    lg und Danke für entsprechenden Input

  • meinst du Maus Klicks im Programm ?
    Wenn du das meinst und die Button nicht ansteuern kannst mit Controlclick.
    Aktiviere die Option :

    AutoIt
    Opt("MouseCoordMode", 2);2=client



    Dann kannst du versuchen dir das Fenster hochzuholen:

    AutoIt
    Opt("MouseCoordMode", 2)
    $pid=run('notepad.exe')
    $hWnd = WinWait("[CLASS:Notepad]", "", 10)
    MouseMove(274, 83, 10)


    Nun wirst du sehen das der Maus Cursor immer nur im innerhalb des $hWnd rumschwirrt solange du die Koordinaten nicht außerhalb der Größe des Fensters setzt.

    Vielleicht kannst du ja auch noch auf eine gewünschte Größe dein Programmfenster anpassen lassen.

    Damit du dann auch immer die gleichen abstände hast zu den Buttons im Programm jedes Programm macht ja gerne mal komische Sachen wo sich dinge verschieben etc.
    bei einem Starren Design geht das natürlich einfacher.

    Mit dem AutoIt Window Info kannst du den Cursor setzen und dann diese ControlClick Coords: dafür nehmen. Dann solltest du immer die richtigen Positionen der Buttons treffen.


    Aber vielleicht meinst du auch was ganz anderes ;D

  • Das klingt ja ert mal schon sehr gut, hatte ich doch im Hinteropf, dass AI da was parat hat, dann scheint mein Projekt ja noch nicht verloren. Werde ich morgen mal mit experimentieren. Dumme Frage noch mal, gibt es bei MouseMove eigentlich auch ne Aert HIDE Modus, also zum unsichtbar machen des Pfeils?


    lg und Danke noch mal

  • okidoki, danke, werde ich mir mal anschauen, ich habe festgestellt, dass der dritte Parameter der ja von 0 bis 10 gehen soll und die Geschwindigkeit steuern soll, keinen wirklichen Einfluss hat, egal ob 0 oder 10, ist immer gleich schnell. Ist das normal?

  • Du meinst so:


    ;MouseMove(23, -10, 10)


    MouseClick(23, -10, 1)


    Funzt leider nicht :(


    Apropos der von dir genanten UDF, was heisst denn:

    you can automate all applications/programs that support ui automation and/or accesibility api from microsoft


    Die Applikation die beobachtet werden soll ist ziemlich alt, vielleicht sogar nicht mal dieses Jahrtausend ;)

  • nene

    MouseClick ( "button" [, x, y [, clicks = 1 [, speed = 10]]] )

    button : links oder rechts (left or right)

    dann die Koords

    Dann wie viele klicks

    dann der speed.

    Mouseclick('right', 83, 10, 1, 0)



    edit:

    ältere Applikationen kann man oft, aber leider nicht immer mit dem AutoIt Window Info auslesen, wenn du unter :

    >>>> Control <<<<

    alles auslesen kannst dann könntest du sofort mit Controlclick arbeiten, das ist genauer und unabhängig von der Größe des Fensters.



    Zitat

    Apropos der von dir genanten UDF, was heisst denn:

    you can automate all applications/programs that support ui automation and/or accesibility api from microsoft


    Zitat


    ich glaube damit kannst du sowas auch machen aber frag mich nicht wie genau das funktioniert ^^.


    :) ich weiß es nicht.

  • Dumme Frage noch mal, gibt es bei MouseMove eigentlich auch ne Aert HIDE Modus, also zum unsichtbar machen des Pfeils?

    Es geht wohl auch, wenn du MouseMove(274, 83, 10) zu MouseMove(274, 83, 0) änderst.


    MouseMove ( x, y [, speed = 10] )

    Parameters

    x The screen x coordinate to move the mouse to.

    y The screen y coordinate to move the mouse to.

    speed [optional] the speed to move the mouse in the range 1 (fastest) to 100 (slowest). A speed of 0 will move the mouse instantly. Default speed is 10.



    MouseMove(274, 83, 10)

    Bei MouseMove(274, 83, 10) kann man sich das , 10 sparen, denn das ist eh Default.

  • Bitnugger

    das stimmt. aber die eigene mause sollte man bei mousemove dennoch nicht bedient werden sonst kommt es zu fehleingaben auch bei 0 kann das passieren.
    Der Mauszeiger wird kurz unsichtbar und 'telepotiert' sich augenscheinlich, aber in Wirklichkeit bewegt er sich.(glaub ich zumindest :))
    Dann muss man mit BlockInput arbeiten. Mir ist nicht bekannt das mausklicks mit Programmen die im hide(modus/hintergrund) laufen funktionieren, so hab ich es zu mindestens verstanden.(ich glaub ich habe da zu viel reininterpretiert ^^)

  • okidoki, ich muss leider erst mal warten bis der Kollege mit dem zu überwachenden Tool wieder im Hause ist, dann werde ich Eure Vorschläge mal durchtesten, bis dahin


    vielen Dank erstmal für Euren Input



    lg und eine schöne Woche noch