In einem Loop die Mausposition verändern

  • Hallo, bin neu hier und habe mich mal bisschen durch das Forum gelesen. Da es hier tolle Tipps gibt, dachte ich mir, dass vielleicht auch bei meinem Problem geholfen werden könnte. Ich wollte folgendes fragen:

    Ich habe ein Programm, in das ich einen Loop einbauen möchte, in welchem ich in einer Excel Tabelle Begriffe herauskopiere. Dafür möchte ich bei jedem neuen Klick in dem Loop, dass die Maustaste sich in der Y-Achse um 15 Punkte nach unten bewegt.
    Kann mir vielleicht einer sagen wie so etwas geht?

    Wenn ich das hätte, wäre die 2. Frage:

    Wenn die Maus dann bei Position 905 in der Y-Achse angekommen ist. soll die Maus runter scrollen, sodass ich die nächste Seite der Excel Tabelle bearbeiten kann.

    Viele Grüße und schonmal danke für die Tipps!

  • Hi, entweder freundest du dich tatsächlich mit der ExcelUDF an, ich konnte mich aber auch nicht anfreunden, deshalb nutze ich lieber die Tastatur.
    In einem Beispiel wäre das:

    Spoiler anzeigen
    Code
    For $i = 1 To 20
    	Send("^{C}") ; STRG C
    	$info = ClipGet() ; Aus der Zwischenablage holen
    	Send("{ENTER}") ; Damit die Selektierung verschwindet
    	Send("{DOWN}") ; Nächste Zeile
    Next

    Ansonsten könntest du das mit der Maus so realisieren:

    Spoiler anzeigen
    Code
    For $i = 1 To 20
    	$m = MouseGetPos() ; $m[0] = x Position ; $m[1] = y Position
    	MouseMove($m[0],$m[1]+15)
    	If $m[1] > 950 Then
    		MouseWheel("down",3) ; die 3 zu dem ändern wie weit du scrollen möchtest
    	EndIf
    Next

    Viel Erfolg! :)

  • Hey, danke für die tollen Tipps. Da ich erst vor Kurzem damit angefangen habe, werde ich den Tipp von MorsGer befolgen und dann mal testen.

    Wenn ich mehr Zeit habe, werde ich mich dann mal für die nächsten Projekte in ExcelUDF reinlesen. ;)

    Viele Grüße

  • Hallo, klappt leider bisher noch nicht so wie ich es haben will.

    Hir mal das Programm wie ich es bisher geschrieben habe: (bestimmte Daten und Seiten wurden zensiert und ja ich weiß es ist amateurhaft, da ich aber erstz vor Kurzem angefangen habe:



    Die Kommentare zu der jeweiligen Funktion können ignoriert werden, da ich die meisten nur für mich geschrieben habe, dass ich weiß welche Funktion was bewirkt.
    Kurz gesagt will ich folgendes mit dem Programm erreichen:

    Es soll Excel und die Internetseite öffnen die ich angegeben habe, soll von der Exceltabelle die Informationen herauskopieren, die Info auf der Internetseite eingeben, einen Screenshot machen, ihn abspeichern. Danach die nächste Info aus der Exceltabelle herauskopieren wieder in die Internetseite einfügen, neuen Screenshot unter anderem namen abspeichern.

    Wie bereits geschrieben, sind die Infos in der Exceltabelle jeweils untereinander. Den abgespeicherten Namen soll es auch jeweils in dem Loot mit der nächsten Zahl abspeichern, was ich bisher leider nciht hin bekommen habe.

    Viele Grüße und ein schönes Wochenende!


    Edit Oscar: AutoIt-Code-Tags hinzugefügt!

    2 Mal editiert, zuletzt von Oscar (3. Juli 2016 um 08:51)

  • Hi,

    Man wird dir hier so kaum helfen können.

    Wie Oscar schon sagte:

    Eine Maussteuerung um Daten aus Excel auszulesen ist die denkbar schlechteste Lösung!
    Es gibt eine leistungsstarke Excel-UDF (wird mit AutoIt installiert). In der Hilfe findest Du zahlreiche Beispiel-Skripte.
    Ansonsten gibt es noch ein Wiki und ein paar zusätzliche Beispiele.

    Selbes gilt für die Eingabe vom Daten auf Internetseiten und das Abspeichern von Screen Capture.
    Zumal alle Funktionen dafür schon existieren.

    Sie dir mal die Hilfe und Beispiele zu folgenden Funktionen an:


    mfg

    Zeitriss

    Einmal editiert, zuletzt von Zeitriss (3. Juli 2016 um 13:35)

  • Hi,
    du solltest dir zunächst mal Gedanken über deine Terminologie machen, bevor du anfängst Fragen zu stellen, egal um welches Thema es geht...

    Excel wird angefragt, das Script verwendet OpenOffice...zwei völlig verschiedene Paar Schuhe!
    Btw. gibt es u.a. auch eine Openoffice-UDF, welche dein "Mausgeklicker" und die dadurch provozierten "Fehler" reduziert. Um Internetanwendungen zu automatisieren, verwendet man idR. die IE-UDF.

    Du hast jetzt schon ein Script geschrieben nach deiner Methode "Mausgeklicker". Funktioniert das soweit, so gut?
    Wenn ja, klasse! Dann brauchst du ja nur weiterzumachen...
    Sämtliche Anwender hier im Forum, die auch nur halbwegs mit der Materie beschäftigen, benutzen ein gänzlich anderes, und glaub mir, wesentlich stabileres und einfacheres System um das zu machen, was du da versuchst zu tun! Und KEINER würde ernsthaft mit "Mausgeklicker" arbeiten....

    Ich gehe aus Erfahrung davon aus, dass diese Art "Script", welches nichts weiter ist als eine Aufzeichnung von "Mausgeklicker", ziemlich fehleranfällig ist.
    Dieses Script kann nicht verwendet werden, um dir Hilfe zu geben. Wenn eine andere Bildschirmauflösung bzw. Browser verwendet wird, läuft garnichts mehr! Von der nicht vorhandenen Möglichkeit, sinnvoll zu debuggen (Fehler zu lokalisieren und zu beseitigen), völlig abgesehen.
    Hilfe kann man nur geben, wenn ein ausführbares und somit testbares Script zur Verfügung steht!

    Wenn du in der Hilfe unter sämtlichen "Maus"-Befehlen nicht den findest, den du aktuell benötigst, dann können wir dir leider auch nicht helfen, alle Befehle stehen in der Hilfe!

    • Offizieller Beitrag

    Solch ein Skript ist viel zu fehleranfällig und zu sehr auf den eigenen PC zugeschnitten!
    Die Koordinaten sind abhängig von der Monitorauflösung und der eingestellten Windows-Skalierung.
    Die MouseWheel-Befehle wohl auch noch von den eingestellten Maus-Eigenschaften.
    Die Datei-Pfade und verwendeten Programme sind nur bei Dir vorhanden!
    Und außerdem darf man bei so einem Skript (Mausmove, Send und co.) absolut nichts nebenbei machen, weil das zu sofortigen Fehlfunktionen führt!

    Jegliche Hilfe-Versuche bei so einem Skript sind Ratespiele, warum dies oder jenes bei Dir dann nicht funktioniert.
    Tut mir Leid das zu sagen, aber bei so einem Skript wird es von meiner Seite keine Unterstützung geben.

  • Hui hui hui .. Das du das so tatsächlich praktisch anwenden möchtest wusste ich nicht. Ich dachte dir geht es mehr um die einzelnen Befehle und das Lernen dieser.
    Wie die anderen schon schrieben kann man dir ziemlich schlecht helfen wenn man nicht genau weiß was du eigentlich machen möchtest. (im Browser rum klicken.. soweit sieht man das..)

    Aber deinen Teil mit dem Screenshot hättest du kürzen können zu:

    Code
    #include <ScreenCapture.au3>
    ;... Dein Programm ...
    _ScreenCapture_Capture("E:\AScreenshots\" & $dateiname & ".jpg")

    Um dir bei den anderen Sachen helfen zu können braucht man aber wohl Informationen zu dem was du vorhast.

    Viel Spaß und Erfolg weiterhin! :)

    PS: Den Rat sich zu Herzen nehmen, sich selbst die Funktionen zu erarbeiten, ist auf keinen Fall falsch. Du wirst viel besser wenn du deine Programme vollständig selbst geschrieben hast. :)

  • Hallo, es schließlich jetzt auch so hin bekommen. Nur funktioniert folgender Befehl nicht:


    Wenn ich jetzt dieses Script laufen lasse, dann funktioniert alles, bis auf das letzte Wechseln auf die letzte Seite. Wieso? Es bleibt dann einfach wieder bei der Fake Name Seite hängen, anstatt noch auf die XXX Seite zu switchen. Kann mir das einer erklären? Ist jetzt nur ein Beispiel. In meinem Programm habe ich das selbe Problem ,dass es dann einfach nicht mehr auf den anderen Tab switcht.
    Gibt es vielleicht eine andere Möglichkeit, zu gewährleisten, dass es z.B. von dem OpenOffice zu einer bestimmten davor geöffneten Chrome Seite springt (in den Vordergrund rückt).

    2 Mal editiert, zuletzt von Kai0001 (15. Juli 2016 um 13:06) aus folgendem Grund: ergänzt

  • Mach mal ScreenShot(s) von Chrome, damit ich mir ein Bild machen kann. Ich befürchte nämlich, daß nur 1 Instanz von Chrome geöffnet ist und die Webseiten als TAB's eingebettet sind.

    Hast du schon einmal

    Chrome support for AutoIT is here! [Blockierte Grafik: https://www.autoitscript.com/forum/uploads/…11111111111.png]
    This UDF includes a Chrome Extension (http://developer.chrome.com/extensions/getstarted.html) and Native Messaging Host (http://developer.chrome.com/extensions/mes…-messaging-host) that integrate with a new Chrome UDF (Chrome.au3) to provide automation support for the Chrome browser.

    ausprobiert? Ich benutze kein Chrome und kann dir daher auch nicht sagen, ob und wie sie dein Problem lösen kann.

  • Wollte die 2. Datei herunterladen, wurde dann von meinem Antivir detected. Habe es dann lieber gelassen.
    Habe es jetzt mit IE gemacht. Da wird jede Seite mit einem extra Fenster geöffnet und dann funktioniert auch das switchen.
    Nur habe ich jetzt noch das Problem, wenn ich eine Seite aufrufe, in der einen Link ein gebe und der aufgerufen werden soll, lädt die Seite manchmal ewig oder es kommt ein Fehler, dass die Seite nicht geladen werden kann.
    Ich brauch jetzt die Möglichkeit, dass das Script so lange stopt, bis der aufgerufene Link vollständig geladen hat, oder wenn es fehlschlägt, es erneut versucht wird.

    Hatte es bereits mit _IELoadWait($oIE) versucht. Jedoch funktioniert das ja nur, wenn man die Seite direkt durch einen Befehl aufgerufen hat und nicht durch eine andere Seite, wenn ich das richtig verstanden habe.
    Wäre mein einzigstes Problem jetzt noch...