Simulation von Mausbewegung funktioniert in einigen Anwendungen nicht. Warum?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MidiProgger76.

    Simulation von Mausbewegung funktioniert in einigen Anwendungen nicht. Warum?

    Hallo,
    ich arbeite an einer Maussteuerung mit einem speziellen Eingabegerät. Damit kann man ohne die Hände einzusetzen, die Maus steuern. Es ist gedacht für Leute mit einer Behinderung. Jetzt zu meinem Problem. Ich versetze die Maus mit

    VB.NET-Quellcode

    1. Cursor.Position = MausXYPoint 'enthält die neue Mausposition


    Habe es aber auch mit mouse_event ausprobiert.

    Das funktioniert eigentlich perfekt, wären da nicht einige Anwendungen, die das nicht mitmachen. Wenn ich die Maus simuliert auf deren Fenster platziere und einen Klick simuliere, lässt sich die Maus da nicht mehr wegbewegen. Da kommt man nur weg, wenn man eine echte Maus bewegt.

    Ich arbeite mit Windows 7 (Ultimate) und dort tritt das bei der Bildschirmtastatur auf. Versuche ich das Fenster über die Titelleiste zu verschieben, bleibt die Maus stecken.

    Hat jemand eine Idee, womit das zusammenhängen könnte? Gibt es eine alternative Art, die Mausbewegung zu simulieren?

    Ich würde das Problem gerne lösen, aber ich weiß einfach nicht, wo ich anfangen soll. Über Tipps würde ich mich daher sehr freuen.

    Grüße

    Tobias
    If she IsNot here then sunshine = false

    MidiProgger76 schrieb:

    Es ist gedacht für Leute mit einer Behinderung.
    Falls Du unter Win programmierst: Win bietet sehr gute Eingabehilfen zur erleichterten Bedienung.
    Was soll also Dein Programm?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Gerät, um welches es geht, ist eine Art Joystick mit Breath Controller. Die erleichterte Bedienung von Windows hilft hier leider nicht. Ich schreibe diese Software wirklich nicht ohne Grund. Das beschriebene Verhalten der Maus Emulation ist das einzige Problem dabei.
    If she IsNot here then sunshine = false

    Derfuhr schrieb:

    mit SetCursorPos
    Man munkelt, die Position-Eigenschaft macht genau das. ;)

    @MidiProgger76
    hat vielleicht was damit zu tun, dass diese Programme DirectInput o.ä. verwenden, was nicht auf den Window-Messages basiert.
    Oder aber die Programme verhindern solche Sachen aktiv, es lässt sich nämlich vom Programm aus feststellen, ob eine Message injected wurde.
    @NGE'o: Probier mal folgendes: Erstell ein kleines Programm, das die Maus versetzt. Vielleicht einen Timer, der alle paar Sekunden die Maus an eine bestimmte Position setzt. Etwa so: Cursor.Position = New Point(100, 100)

    Öffne die Bildschirmtastatur und starte das Programm. Der Cursor springt alle Paar Sekunden auf die vereinbarte Position. Jetzt klick mit der Maus auf die Titelleiste der Bildschirmtastatur (ganz oben, wo Bildschirmtastatur steht) und lass die Maus da stehen. Die Maus wird nicht mehr auf die vereinbarte Position springen!

    Das ist, wenn die Bildschirmtastatur im Vordergrund ist.

    @Artentus:
    Setcursorpos klappt auch nicht. Aber ich habe mir den Rückgabewert dabei angesehen und festgestellt, dass wenn die Bildschirmtastatur im Vordergrund ist, er false ergibt. Hast wahrscheinlich Recht, dass es aktiv verhindert wird.
    If she IsNot here then sunshine = false

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MidiProgger76“ ()

    Guter Tipp mit der Fehlermeldung. Sie lautet nämlich: Es wurde versucht, auf ein Token zuzugreifen, das nicht vorhanden ist.

    Ich weiß jetzt nicht genau, was das aussagt, aber es hat mich auf die Idee gebracht, meine Software als Admin auszuführen. Jetzt funktioniert alles. Die Maus bleibt nicht mehr stecken. Einfach genial.
    If she IsNot here then sunshine = false

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MidiProgger76“ ()