Laden...

Widerholender Mausclick während Maustaste gedrückt ist

Erstellt von Shaddow30 vor 3 Jahren Letzter Beitrag vor 3 Jahren 744 Views
S
Shaddow30 Themenstarter:in
6 Beiträge seit 2017
vor 3 Jahren
Widerholender Mausclick während Maustaste gedrückt ist

Hallo liebe C# Community,

ich stehe hier vor einer für mich großen Herausforderung, vorweg ich bin ein Hobbyentwickler und habe mir vieles mit großer Freude selber beigebracht weiß aber leider noch längst nicht alles!

Unzwar habe ich mir eine MouseKeyHook Library runtergeladen und mir InputSimulator für das simulieren von mausclicks besorgt.
Beides NuGet Pakete.

Ich habe mir ein script erstellt das, während ich meine linke Maustaste gedrückt halte, sehr schnell viele linke mausclicks quasi spammt, und sobald ich loslasse, damit aufhört. Mein Problem ist, dass das manchmal hängen bleibt.

Mit dem MouseKeyHooks habe ich mir ein Mouse Button Down und Mouse Button Up Event erstellt, dann habe ich mir eine int variable erstellt die immer +1 zählt sobald die maustaste gedrückt wird und -1 sobald sie losgelassen wird. Mir ist aufgefallen dass in den Situationen, wo die Maustaste hängen bleibt meine variable plötzlich zwischen 3 und 2 hin und herspringt, das heißt ein up event wurde ausgelassen oder nicht registriert.

Ich habs auch schon mit GetAsyncKeystate GetKeystate und anderen Hook Libs probiert. Ich komme immer zum selben Ergebnis. Mit Autohotkey habe ich sowas ähnliches programmiert, da hatte ich einen Befehl "GetKeyState" wo ich einen Parameter hinzufügen konnte um nur den physischen Status zu lesen. Also ob der Nutzer die Maustaste auch wirklich gedrückt hat oder nicht.
https://www.autohotkey.com/docs/commands/GetKeyState.htm

Da frage ich mich ob das nicht auch mit C# möglich sei, im Internet habe ich leider nichts hilfreiches gefunden.

Meine Frage ist nun wie kann ich das umgehen bzw lösen? Was ist da genau das Problem bzw warum passiert das überhaupt?

Vielen Dank und freundliche Grüße
Shaddow

4.931 Beiträge seit 2008
vor 3 Jahren

Auch AutoHotkey kann nicht zaubern, mit dem Parameter "P" wird statt GetKeyState direkt GetAsyncKeyState aufgerufen, s.a. die Diskussion in Physical Key State.