Anfängerproblem mit Dual Monitor und wechselnden Instanzen

  • Hallo allerseits,

    ich beschäftige mir seit kurzem mit AutoIT, denn ich möchte eine Windows-Anwendung auf der Arbeit (ein Workflow-Management-System aus dem Übersetzungsbereich) dazu bringen, bestimmte Abfolgen von Klicks und Eingaben auf Knopfdruck abzuspulen, da ich hierzu zu faul bin :sleeping:

    Vorweg, es ist mir auch schon gelungen 8)

    Zwei Probleme habe ich allerdings noch:

    Ich muss in ein Feld (ein 10-spaltiges und vielzeiliges, in die Anwendung integriertes Feld der Klasse "WindowsForms10.Window.8.apps" einen Focus setzen, um hierin eine Auswahl machen zu können. Sichtbar macht man dieses Feld über einen Knopf am linken Bildrand (Send {F5}). Nach ersten billigen Versuchen mit Koord.-Mausklicks (pfui) habe ich die Advanced (Class) Nomenklatur dieses Feldes verwendet, wie in

    ControlClick ("SDL TeamWorks [Server1]", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:29]").

    Grund: das Skript soll bei fenster max., min und allem dazwischen funktionieren, und das auf Systemen mit 1 oder 2 Monitoren mit verschiedenen Auflösungen.

    Die Control-ID zur Identifizierung ist leider nutzlos, sie ändert sich ständig (evtl. .NET?). INSTANCE erschien mir super. Leider hat bei ca. 30 Neustart-Versuchen auch manchmal die INSTANCE gewechselt, allerdings immer nur zwischen INSTANCE:29 und INSTANCE:10. 100%ige Sicherheit habe ich hier also nicht.

    Kann ich das Feld irgendwie ohne Unsicherheit focussieren? Wenn nicht: kann ich sowas sagen wie:

    -guck welche Instanz es diesmal ist
    -entsprechend mach click("name", "class", "instance)


    Frage 2: die meisten Mitarbeiter haben Dual-Monitors, hauptsächlich 2x 19" TFT. Manche haben den Hauptmonitor links, manche rechts. WENN man mit Koordinaten arbeitet, scheint das immer nur auf dem Primärmonitor zu funktionieren. Ich hatte nämlich schon erwogen, die Anwendung im Skript erst zu maximieren und dann doch mit Koordinaten zu arbeiten, aber wo das Programm maximiert wird, hängt von der zuletzt gewählten Position dieses Fensters ab. Gibt es hierzu Kontrollmöglichkeiten?

    Die Firma dankt :)


    Schönen Gruß

    hoesenking

  • Mit was wird denn die Instance gewechselt? Also wenn die Instance 10 ist was für eine CTRL hat dann die Instance 29?
    Oder sind dann alle Instances anders? Ansonsten kannst du natürlich auch mit Sends arbeiten (also mit Tab ins richtige Feld springen und da was eintragen)
    Ist natürlich wieder keine schöne möglichkeit aber so bisher der einzigste workaround der mir einfällt... auf Koordinaten würde ich verzichten.

    Was evtl. auch noch funktioniert:
    Trage proforma erstmal alles in die Instance 29 ein. Wenn du dein Programm senden lässt und du was in das falsche Feld einträgst kommt dann eine Meldung oder ist irgendwas anders als vorher? Irgendwas was du mit AutoIt erfassen könntest und dann die Prozedur nochmal mit der Instance 10 wiederholst...

    Naja ist alles nix so schön :D Aber das beste was mir im Moment dazu einfällt :/

    Zu Frage 2:
    Schau dir Mal der MouseCoordMode an. Auf der Flag 0 hilft er dir evtl. weiter da du dann einen guten Referenzpunkt hast (immer die linke obere Ecke des Fensters = 0x0y)
    Generell würde ich aber eher von dem Mouseclick zeug abraten...

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D