Frage von Taner1998444, 9

Hallo, ich möchte in visual basic ein Programm erstellen, dass Mausklicks simulieren kann. Bei mir kommt immer eine Fehlermeldung. Weiß jemand woran das liegt?

Hallo, ich habe leider schon durch viele Foren geschaut, aber noch keine passende Antwort gefunden. Ich versuche in Visual Basic 2010 einen linken Mausklick zu simulieren, mit dem Quelltext:

Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) Public Const MouseeventF_LeftDOWN = &H2 Public Const MouseeventF_LeftUP = &H4

und an der entsprechenden Stelle:

mouse_event(MouseeventF_LeftDOWN, 0, 0, 0, 0) mouse_event(MouseeventF_LeftUP, 0, 0, 0, 0)

aber leider kommt immer die Fehlermeldung: "Ein Aufruf an die Plnvoke-Funktion (...) hat das Gleichgewicht des Stapels gestört."

Schon mal vielen Dank für jede Hilfe.

Antwort
von surbahar53, 9

Die Fehlermeldung weist daraufhin, dass ein Stackfehler aufgetreten ist. Die Funktion mouse_event() ruft eine System-DLL auf und die erwartet die Parameter in einer bestimmten Form, z.B. int16 / int32 / long / short usw.

Ich nehme an, dass die Konstanten MouseeventF_LeftDOWN und MouseeventF_LeftUP nicht wie verlangt vom Typ LONG sind. Ich würde es mal mit


Public Const MouseeventF_LeftDOWN as LONG = &H2
Public Const MouseeventF_LeftUP as LONG = &H4

probieren.

Eine weitere Fehlerquelle könnte sein, dass die Deklaration von mouse_event() in VB nicht zur verwendeten System-DLL passt. Also z.B. wenn 32 Bit und 64 Bit Komponenten vermischt sind.

Antwort
von Smpfdttrblme, 6

Warum verwendest du Deklarationen für VB6 von 1998? mouse_event ist außerdem seit Jahren veraltet. Verwende SendInput.

https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx

Geh auf pinvoke.net und suche die richtige Deklaration heraus.

http://pinvoke.net/default.aspx/user32.SendInput

Keine passende Antwort gefunden?

Fragen Sie die Community