Windows standard Objekte Klicken, Koordinaten Skalieren, Fenster namen

  • Hallo,

    Ich hab mal wieder (ganz simple wie ich vermute) AutoIt fragen.

    1) Vieles in AutoIt basiert ja auf den Bildschirm Koordinaten.
    Jetzt haben ja nicht alle die Selbe Auflösung, gibts da ne Möglichkeit,
    das Script einmal zu schreiben und dann eine "Skalierungsfunktion"
    zu haben, die vor jeden Lauf die Koordinaten skaliert,
    davon ausgehend, das sich die Elemente gleich skalieren ?

    2) Wenn ich auf Fenster auf Existenz/Aktivität prüfe,
    Dann haben die ja auch auf verschieden PC (gleiche Betriebssystemversion!)
    manchmal andere Namen.
    zB auf Vista das "Programs & Features" und am anderen Vista "Control Panel\Programs & Features"
    u.s.w. wie umschifft man das?

    3) Das mit den Koordinaten Klicken in AutoIt ist ja toll,
    aber kann ich auch irgendwie GUI Elemente ansprechen von Windows(/.Net) Standard Objekten.
    zB.: Bei Fenstern die Menues sind ja immer vom Grundprinzip gleich aufgebaut.
    Oder bei .Net Applikationen die Standard Buttons und Scrollen?
    Gibt es da eine irgendwie geartete Möglichkeit?
    Weil die Apps ja manchmal auch für Bilnden-Steuerng Möglich sind,
    muss man diese dinge ja auslesen und ansteuern können ...

  • zu 1.) Das vieles auf Bildschirmkoordinaten basiert trifft sicher nur dann zu, wenn man Autoit für Mausschubs-klickwas-Skripte verwendet. Das Problem mit den Auflösungen lässt sich z.B. mit @DesktopHeight, @DesktopWidht und Opt("MouseCoordMode", 2) umgehen.

    zu 2.) Opt("WinTitleMatchMode", ...)

    zu 3.) Kann ich nicht viel zu sagen da ich es nicht benutze. Sollte aber auch mit .NET Controls funktionieren.


  • zu 1.) Das vieles auf Bildschirmkoordinaten basiert trifft sicher nur dann zu,
    wenn man Autoit für Mausschubs-klickwas-Skripte verwendet. Das Problem mit den Auflösungen
    lässt sich z.B. mit @DesktopHeight, @DesktopWidht und Opt("MouseCoordMode", 2) umgehen.


    Was verwendest du bzw was sind den nicht "Mausschubs-klickwas-Skripte"?
    Das mit @DesktopWidht wäre das was ich miene.
    Meine nur obs schon vorfertige Konstrokte oder Imlementierte sachen gibt,
    damit ich das einfacher haben kann.


    zu 2.) Opt("WinTitleMatchMode", ...)


    Die Beschreibung der Funktion ist bisal wage ...
    aber ich werde mal versuche damit anstellen müssen,
    obwohl da nur stehet, dass es weniger sieht nicht anders matched.


    zu 3.) Kann ich nicht viel zu sagen da ich es nicht benutze. Sollte aber auch mit .NET Controls funktionieren.


    Was verendest du genau nicht ?
    Wie würde es aussehen wenn ich ES benutze?

  • Was "Mausschubs-klickwas-Skripte sind, sollte sich aus dem Namen ergeben. Sowas schreib ich nicht. Das gleiche gilt auch für Automatisierungen von Programmen die mit ControlClick() reealisiert werden. Mag ich nicht, brauch ich nicht, mach ich nicht. Daher auch nur die Vermutung das sich auch .NET Controls ansteuern lassen. Probieren geht über studieren.

    Der WinTilteMatchMode lässt sich auch mit regulären Ausdrücken erweitern. Damit matched es dann nicht nur "weniger".

    Bevor du dich auf AutoIt stürzt, schau dir am besten die Grundlagen in der Hilfe an. Im Forenportal findest du dann auch noch den Link zum Wiki. Was mit AutoIt alles möglich ist sollte dir ein Blick in das Unterforum Skripte zeigen. Nach über einem Monat Mitgliedschaft wirst du das aber warscheinlich alles schon getan haben ;).

    Skriptbezogene Unklarheiten lassen sich jederzeit im Forum klären, für einen theoretischen Grundkurs ist das hier meiner Meinung nach allerdings der falsche Platz.


  • Was "Mausschubs-klickwas-Skripte sind, sollte sich aus dem Namen ergeben. Sowas schreib ich nicht. Das gleiche gilt auch für Automatisierungen von Programmen die mit ControlClick() reealisiert werden. Mag ich nicht, brauch ich nicht, mach ich nicht. Daher auch nur die Vermutung das sich auch .NET Controls ansteuern lassen. Probieren geht über studieren.


    Daher wollte ich ja auch wissen was du verwendest oder machst, was davon so unterschieden wird ... rein interessehalber.


    Ich versuche jetzt also mit :

    [autoit]

    ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )

    [/autoit]

    was zu klicken. aber ohne all zu großen erfolg.

    Ich habe da einen Button den cih klicken will, und habe diese Infos:

    [autoit]

    >>>> Control <<<<
    Class: WindowsForms10.BUTTON.app.0.2e0c681
    Instance: 217
    ClassnameNN: WindowsForms10.BUTTON.app.0.2e0c681217
    Name:
    Advanced (Class): [CLASS:WindowsForms10.BUTTON.app.0.2e0c681; INSTANCE:217]
    ID: 3539770
    Text: Funktionen
    Position: 489, 842
    Size: 73, 73
    ControlClick Coords: 19, 15
    Style: 0x5601000B
    ExStyle: 0x00000000
    Handle: 0x0036033A

    [/autoit]

    Wobei sich aber alles bei einem neustart der Anwendung ändert mit ausnahme von:
    Class
    Name (wo in diesem einen Fall aber auch mal nichts drinstehen kann)
    Text (wo zwar in diesem Fall was drinsteht aber auch nicht muss)
    Name oder Text sind immer vorhanden.

    Hab jetzt also so Kombinationen wie:

    [autoit]

    ControlClick ( "TestIO", "" , "[CLASS:WindowsForms10.BUTTON.app.0.2e0c681;TEXT:Funktionen]")

    [/autoit]


    versucht was scheinbar auch halbwegs geht,
    aber wenn ich keinen Text haben sondern nur den Namen.
    Oder gibts da einen Trick wie ich dann was Identifizierendes herausbekomme ?