Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.02.2016, 15:18

C# Automatischer Mausklick - Fehlermeldung

Hey ich habe folgenden Code mit dem ich Mausklicks erzeugen will.

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

        private const int MOUSEEVENTF_LEFTDOWN = 0x02;
        private const int MOUSEEVENTF_LEFTUP = 0x04;
        private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
        private const int MOUSEEVENTF_RIGHTUP = 0x10;

        public void DoMouseClick(int x, int y)
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
        }


allerdings kommt folgene Fehlermeldung:

Ein Aufruf an die PInvoke-Funktion "Projekt.Form1::mouse_event" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.

Habt Ihr eine Ahnung was der Fehler ist, bzw einen Lösungsvorschlag? :)
Danke im Voraus

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

25.02.2016, 15:26

Der Fehlertext ist doch eigentlich eindeutig. Du hast die falsche Signatur für die mouse_event Methode verwendet. (Das long von C# ist etwas anderes als das LONG, welches in der WinAPI verwendet wird ;) )
Die richtige findest du bei pinvoke.net.

Generell wird das aber so wahrscheinlich nicht funktionieren, weil du down und up auf einmal sendest. Im Link ist aber auch ein Beispiel dabei ;)