Frage zu MouseCoordMode

  • Hallo,

    ich habe da mal wieder zwei kleine Problemchen.

    Ich möchte einen ToolTip erstellen, der bei einem Mausklick auf den ToolTip ausgeblendet wird.

    Das funktioniert auch soweit ganz gut.

    Hier eine kleine Testdatei dazu:

    AutoIt v3 Script (neu) (3).au3

    Nun zum Problem:

    Zum Beginn muss ich dazu aber noch was entscheidendes zu dem Testscript schreiben.

    Das Script ist nur ein Test, dass eigentliche Script soll ein Teil einer Funktion werden.

    Am Anfang des Scripts ändere ich den "MausCoordMode" auf 1, damit die angegebenen Mauskoordinaten auch stimmen.

    Aber es könnte auch sein, dass in dem Script, was die Funktion später mal aufruft, ein anderer MausCoordMode angegeben ist und daher würde das eigentliche Programm dann nicht mehr funktionieren.

    Gibt es daher eine Möglichkeit, den MausCoordMode, der vorm Aufrufen der Funktion eingestellt war abzufragen um ihn nach beenden der Funktion wieder einzustellen?

    Und jetzt das andere Problem:

    Die angegebenen Koordinaten sind ja nur bei einer Skalierung von 120 % gültig und müssten daher beim Ändern der Skalierung jedesmal angepasst werden.

    Kann man eigentlich irgendwie erreichen, dass die Koordinaten immer automatisch an die eingestellte Skalierung angepasst werden?

    Oder ist der ganze Ansatz nicht gut, da es eventuell auch eine bessere Lösung gibt um einen Mausklick auf den ToolTip zu erkennen?

    MfG:

    BigRox

  • Wenn ich die Hilfe richtig verstehe, gibt Opt() / AutoItSetOption() im Erfolgsfall, die bisherige Einstellung als Rückgabewert zurück.

    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"

    Einmal editiert, zuletzt von Micha_he (30. September 2019 um 15:01)

    • Offizieller Beitrag

    Die angegebenen Koordinaten sind ja nur bei einer Skalierung von 120 % gültig und müssten daher beim Ändern der Skalierung jedesmal angepasst werden.

    Kann man eigentlich irgendwie erreichen, dass die Koordinaten immer automatisch an die eingestellte Skalierung angepasst werden?

    Gib deine Koordinaten nicht als Fixwerte ein, sondern berechne den Berichtigungsfaktor beim Skriptstart in einer Funktion.

    Mal ohne jede Richtigkeit von Werten - nur als Idee:

    • Offizieller Beitrag

    Ein Tooltip ist auch nur ein Window, also kann man die Koordinaten problemlos zur Laufzeit auslesen:

  • Hallo,

    Micha_he

    Stimmt, ich hätte eben den ganze Hilfe-Text lesen sollen und nicht nur den Teil wo "MouseCoordMode" steht.

    Oscar

    Danke für den Code, nur leider funktioniert der Code bei mir nicht.

    Bei mir kommen - bei einem Klick auf den ToolTip - die Fensterkoordinaten:

    Left: 1266, Top: 849, Right: 1490 und Bottom: 873

    und die Mauskoordinaten:

    X: 1076, Y: 403

    zurück und es geschieht nichts (der ToolTip bleibt sichtbar).

    (Skalierung 120 %, Opt("MouseCoordMode", 1), Bildauflösung: 1024 X 768)

    MfG:

    BigRox

    Profi

    2 Mal editiert, zuletzt von BigRox (30. September 2019 um 19:26)

  • Hallo Oscar,

    die AutoIt-Version ist: 3.3.14.5

    und die Windows-Version ist: Windows 10 Pro 64bit 1903 18362.387

    Und um an die Werte zu kommen benutze ich das hier:

    AutoIt v3 Script (neu) (4).au3

    Gerade die Werte für Top und Bottom, kommen mir etwas sonderbar vor, demnach dürfte der ToolTip ja nur 24 Pixel hoch sein.

    MfG:

    BigRox

    • Offizieller Beitrag

    Lass die Daten mal nur in der Console ausgeben:

    Ansonsten verändert das schliessen der ersten MsgBox ja die Mausposition.

    Die AutoIt-Version benutze ich auch, allerdings habe ich noch Windows7 (64 Bit).

  • Hallo Oscar,

    das mit dem schließen der ersten MsgBox, kann eigentlich nicht das Problem sein.

    Das habe ich mir auch gedacht und deswegen habe ich das Script zweimal ausgeführt.

    Beim ersten mahl habe ich die zweite MsgBox komplett auskommentiert und auf das obere Ende des t im dem Wort Test in dem ToolTip geklickt.

    Dan habe ich das Script beendet und die erste MsgBox komplett auskommentiert.

    Danach habe ich das Script wieder gestartet und nochmals auf das obere Ende des t geklickt.

    Eben habe ich das Script (beide MsgBoxen auskommentiert) kompiliert und als exe ausgeführt und so geht es auch nicht.

    Ich habe dein letztes Script (vom Post #9) soeben ausprobiert.

    Ergebnis:

    Left: 1266, Top: 848, Right: 1497, Bottom: 872

    X: 739, Y: 432


    MfG:

    BigRox

    Einmal editiert, zuletzt von BigRox (1. Oktober 2019 um 15:28)

    • Offizieller Beitrag

    Oder versuche es mal so:

  • Hallo Oscar,

    der Fenstertitel ist: nichts

    das Fensterhandle ist: 0x000100ac

    Error Code: 0

    X: -524, Y: -418

    bei einer Auflösung von: 1024x786

    Was mich aber etwas wundert ist, wenn ich das Fenster-Info-Tool bemühe und da den ToolTip markiere, so zeigt das Tool mir ja

    ua. auch das Handle des ToolTips an.

    Und der ist aber: Handle: 0x0014067A

    Hier alles von dem Tool zu dem Fenster:

    >>>> Window <<<<

    Title:

    Dies ist ein Test

    Zum Ausblenden des ToolTips, auf den ToolTip klicken.

    Class: tooltips_class32

    Position: 615, 390

    Size: 370, 120

    Style: 0x94000003

    ExStyle: 0x00080088

    Handle: 0x00220678

    MfG:

    BigRox

    • Offizieller Beitrag

    Oh, mir ist gerade aufgefallen, dass Windows offensichtlich mehrere Tooltips offen hat (vermutlich hidden) und das dadurch die Class wohl nicht eindeutig genug ist.

    Du musst also doch über den Titel das Window-Handle holen:

  • Hallo Oscar,

    genau das mit dem Titel war wohl dass Problem.

    Deswegen war der ToolTip auch nur 24 Pixel hoch, das war einfach der falsche ToolTip.

    Mit dem Titel funktioniert es auch bei mir.

    Danke für den Tipp:thumbup:

    MfG:

    BigRox