Benutzer-Maus einfrieren

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von SenA.

    Benutzer-Maus einfrieren

    Hallo,
    für mein nächstes Projekt ist es wichtig für einen gewissen Zeitraum die Maus (nur für den Benutzer) zu deaktivieren. Das Programm soll die Maus jedoch steuern können. Es geht um Präzesionsarbeit.
    Es ist bereits alles fertig bis auf das einfrieren der Maus. Blockinput scheint nicht zu funktionieren. Vllt wäre es noch eine möglichkeit über den Gerätemanager die Maus zu deaktivieren.
    Wie würdet ihr das machen?
    Thx
    Ohne große Worte zu verlieren:

    Setze die Maus doch einfach immer auf die selbe Postition z.B. mit einem Timer.
    Das wäre eine Möglichkeit das Problem zu lösen.

    LG
    Dann veränderst du auch ständig die Position, wo die Maus sein soll...

    LG
    Schwebt Dir ein animierter Mauszeiger vor?
    Die geht auch anders zu machen, da gibt es sogar Vorlagen, musst aber selber suchen.
    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!
    Es ist so: Mein Programm arbeitet selbstständig mit der Maus, und bewegt sie zu bestimmten Koordinaten. Kommt der Benutzer irgendwie an die Maus und verändert dadurch die Position kann das fatale Folgen für das Ergebnis haben.
    Ziel: Der User soll für diese Zeit den Mauszeiger nicht beeinflussen können. Das Programm tut das natürlich.

    Meine Idee: DevCon Maus deaktivieren für diese Zeit

    Frage: Geht das eleganter?

    SenA schrieb:

    Es ist bereits alles fertig bis auf das einfrieren der Maus. Blockinput scheint nicht zu funktionieren

    Abgesehen davon dass BlockInput eine sehr harte Massnahme ist, warum sollte das nicht funktionieren ?

    VB.NET-Quellcode

    1. Declare Function BlockInput Lib "user32" (ByVal blockInput As Boolean) As Boolean

    SenA schrieb:

    workt trotzdem nicht bei mir (64 bit problem?)

    Nein, Berechtigungsproblem unter Vista/Win7.

    Aber wenn Du selber die Mausbewegungen per Programm steuerst sollte das so schnell gehen dass eine Useraktion da nicht eingreift. Ich gehe davon aus dass Du den Mausinput für eine andere als Deine eigene Anwendugn einschränken willst?
    evtl. hat das was mit 64 Bit zu tun, manche dlls funktionieren nur unter 32 Bit Executables...
    wenn du die Mauskoordinaten mit einer Variable speicherst und dort veränderst und somit neu setzt, dann bringt jeglicher Eingriff einer Person nichts, da die neue Mausposition nicht relativ zur vorherigen berechnet wird...

    Außerdem könnte man das ganze evtl. elleganter(und schneller) regeln?! Was genau ist denn dein Ziel?
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    jvbsl schrieb:

    evtl. hat das was mit 64 Bit zu tun, manche dlls funktionieren nur unter 32 Bit Executables...
    wenn du die Mauskoordinaten mit einer Variable speicherst und dort veränderst und somit neu setzt, dann bringt jeglicher Eingriff einer Person nichts, da die neue Mausposition nicht relativ zur vorherigen berechnet wird...

    Außerdem könnte man das ganze evtl. elleganter(und schneller) regeln?! Was genau ist denn dein Ziel?
    Es wird erst das Ziel (Koordinaten) angefahren und dann geklickt. Das sieht man wenn man das ganze mal verlangsamt ausführt. Wenn man nun die Maus ständig in Bewegung hält, wird sie nach dem anfahren (da kann sie nicht verändert werden) für kurze Zeit bewegt werden, dann wird der Klick ausgeführt => der Klick landet nicht da wo er sein soll.

    Also ich muss auf jeden Fall die Maus deaktivieren.