Problem mit MouseClick()

  • Hallo, ich möchte ein Programm (MyPublicWifi) per Mausklick minimieren. Dazu verwende ich folgenden Code:

    AutoIt
    #include <AutoItConstants.au3>
    MouseMove(970,308)
    ;MouseClick($MOUSE_CLICK_LEFT)
    MouseClick("")

    Der Mauszeiger bewegt sich an die richtige Stelle, aber der Klick wird nicht ausgeführt. Die Variante in Zeile 3 geht auch nicht.
    Eine Fehlermeldung wird nicht ausgegeben. Der Rückgabewert ist 1, also alles ok. :rolleyes:
    Es scheint aber irgendwie an dem Programmfenster zu liegen, denn die Funktion WinSetState("MyPublicWifi", "",@SW_MINIMIZE)
    funktioniert auch nicht bei diesem Fenster. Andere Programmfenster kann ich problemlos mit der Maus oder mit WinSetState

    minimieren. Das BS ist Win10. Hat jemand eine Idee, woran das liegen könnte?

  • Schau dir mal WinSetState( ) an. ( @SW_MINIMIZE )
    Die benötigten Infos für die Funktion findest du mit Hilfe des Au3Info Programms das du in deinem
    AutoIt Ordner findest.

    ~IRC: irc.afterworkchat.de #autoit

  • Der Fenstertitel wird schon im Info Fenster angezeigt... :)
    Wenn ich aber folgenden Code aufrufe:

    Code
    #include <AutoItConstants.au3>
    WinActivate("MyPublicWifi")
    WinSetState("MyPublicWifi", "",@SW_MINIMIZE)
    MouseMove(970,308)
    ;MouseClick($MOUSE_CLICK_LEFT)
    $i=MouseClick("")
    MsgBox(4144, "Rückgabe",$i, 10)

    dann wird erst das Fenster aktiviert, aber dann nicht minimiert. Dann geht die Maus hin, aber der Klick wird scheinbar nicht ausgeführt. Scheinbar deswegen, weil als Rückgabe "1" kommt. ?(

  • Hab nochmal ein bischen rum probiert.

    Das hier funktioniert bei mir.
    Allerdings nur wenn ich vorher NICHT ein WinActivate ausführe!
    Führe ich das aus bewegt sich meine Maus nicht. Obwohl die Funktion eine 1 zurück gab. Also erfolgreich ausgeführt wurde.
    Gleiches Verhalten bei ControlClick und WinSetState.

    Leider habe ich bisher keine andere Methode mittels ControlClick, WinSetState, usw. finden können um das Fenster zu minimieren.

    Kleiner Zusatz. Habe das obige in einer Win7 x64 VM getestet. Mir ist nicht bekannt ob das Einfluss auf meine Ergebnisse hatte.

    ~IRC: irc.afterworkchat.de #autoit

    • Offizieller Beitrag

    Lass dir mit dem AutoIt Window Info Tool die Infos zum Fenster geben. Titel reicht oft nicht, weil der bei verschiedenen Instanzen des Fensters identisch ist. Über zusätzlichen Text des Fensters oder besser über CLASS und INSTANCE kannst du das Fenster i.d.R. eindeutig identifizieren und auch über die Win-Funktionen ansprechen.
    Schau dir in der Hilfe unter <Using AutoIt> die Kapitel "Window Titles and Text" mal genauer an.

  • AutoIt
    #include <AutoItConstants.au3>
    WinActivate("MyPublicWifi")
    WinSetState("MyPublicWifi", "",@SW_MINIMIZE)
    MouseMove(970,308)
    ;MouseClick($MOUSE_CLICK_LEFT)
    $i=MouseClick("")
    MsgBox(4144, "Rückgabe",$i, 10)


    Wieso einfach, wenn es auch kompliziert geht... :thumbup:

    AutoIt
    ; MyPublicWifi Window minimieren
    WinSetState("MyPublicWifi", "",@SW_MINIMIZE)
    
    
    ; MyPublicWifi Window wieder anzeigen
    WinSetState("MyPublicWifi", "",@SW_RESTORE)

    Oder so...

    AutoIt
    Local $hWnd = WinGetHandle('[CLASS:TfrmMain]')
    WinActivate($hWnd)
    Local $iOldMouseCoordMode = Opt('MouseCoordMode', 2)
    MouseClick('primary', 292, 8, 1, 100)
    Opt('MouseCoordMode', $iOldMouseCoordMode)

    MouseClick.png

    2 Mal editiert, zuletzt von Bitnugger (24. Juli 2016 um 08:26)

  • Ich glaube, es liegt daran, dass MyPublicWiFi als Administrator gestartet wird (werden muß). Wenn ich das Script in eine EXE umwandle, und diese dann als Administrator starte funktioniert alles wie es soll.