new Geschrieben 1. August 2010 Geschrieben 1. August 2010 Hi ^^ Ich habe ma wieder ein Problem in C#. Es ist folgendes: Ich will das die Maus an eine bestimmte Position kommt und dort 1mal die Schaltfläche anklickt. Also die Maus an verschiedene Punkte zu bekommen ist einfach. Point startingPoint = panel1.Location; startingPoint.Offset(500, 200); Cursor.Position = PointToScreen(startingPoint); Aber wie kann ich jetzt den Maus klick simulieren ? Habe es bereits versucht mit: - SendKeys.Send ( anscheinend gehört die Maus nicht dazu .. ) Habe bereits in Google nachgeschaut und da stande was von Sachen einbinden. Ist das wirklich so das man mit C# keinen einfachen Mausklick simulieren kann ? Wenn man wirklich keinen Maus klick mit c# machen kann, dann müsste ich es wohl mit c++ über dll einbinden, aber bevor ich das mache wollte ich nochma fragen ob das wirklich so ist. Danke für eure Hilfe! Zitieren
TDM Geschrieben 2. August 2010 Geschrieben 2. August 2010 How to: simulate a mouse click How to: simulate mouse and keyboard events Zitieren
lilith2k3 Geschrieben 2. August 2010 Geschrieben 2. August 2010 Mal ganz doof gefragt: Warum löst Du das Ereignis nicht einfach so aus, was mit dem Buttonclick verbunden ist? Zitieren
nubbeldupp Geschrieben 2. August 2010 Geschrieben 2. August 2010 Ich habe es so verstanden, dass er z.B. auf einer I-Netseite einen bestimmten Button klicken will... Sowas wie ein Bot für Browsergames oder MMOs (WoW Fishingbot z.B. wobei diese dann natürlich noch etwas anspruchsvoller sind ) xD Zitieren
new Geschrieben 2. August 2010 Autor Geschrieben 2. August 2010 Hey ! @TDM Bei mir kommt leider eine Fehlermeldung bei: How to: simulate a mouse click Die Fehlermeldug lautet: PInvokeStackImbalance wurde erkannt. Nachricht: - anscheinend wurde das gleichgewicht vom Stapel gestört. mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); @ nubbeldupp So ählich hatte ich es vor. Ich wollte zwar kein Bot schreiben aber ich hatte vor mich über ein Programm automatisch einzuloggen. Bisher hatte ich das über tasten gemacht doch die mus sich jeden Tag ändern, weil sich die werbung auch ändert ... und das nervt und deswegen wollte ich das jetzt über Pixel und einem Mausklick steuern. Kannst du mir ein Weg sagen, wie ich das machen kann ? einen Mausklick zu simulieren ? Auf das Webfenster hab ich schon zugegriffen ... es fehlt nur noch der blöde Mausklick xD Danke für eure Hilfe! Zitieren
TDM Geschrieben 3. August 2010 Geschrieben 3. August 2010 Die Fehlermeldug lautet: PInvokeStackImbalance wurde erkannt. Nachricht: - anscheinend wurde das gleichgewicht vom Stapel gestört. mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); Mach mal nen Zweizeiler draus: mouse_event(MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, X, Y, 0, 0); @ nubbeldupp So ählich hatte ich es vor. Ich wollte zwar kein Bot schreiben aber ich hatte vor mich über ein Programm automatisch einzuloggen. Bisher hatte ich das über tasten gemacht doch die mus sich jeden Tag ändern, weil sich die werbung auch ändert ... und das nervt und deswegen wollte ich das jetzt über Pixel und einem Mausklick steuern. Wäre da VBS nicht sinnvoller? Zumal: Muss es denn die Maus sein? Man kann doch auch ein Enter schicken. Zitieren
new Geschrieben 3. August 2010 Autor Geschrieben 3. August 2010 @TDM Leider funktionierts immer noch net ... Es kommt immer noch die selbe fehlerfunktion. In VBS ? Weiß nicht kenne mich in VB nicht so aus xD Und ein Einter klick würde mir nix nützen ^^ Könnte ich das so machen, dann ich z.b die Taste x als ein Mausklick umstelle ? Denn in verschiedenen Games kann man das auch umstellen ... Würde das was nützen ? Danke Zitieren
TDM Geschrieben 4. August 2010 Geschrieben 4. August 2010 Wie hast du mouse_event denn deklariert? Zitieren
new Geschrieben 5. August 2010 Autor Geschrieben 5. August 2010 Hi ^^ Sry kann jetzt erst wieder zurück schreiben. Ok ich stelle jetzt am besten ma den gesamten Codeausschnitt rein ... Einmal was ich alles benutze: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; mausklick: [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() { //Call the imported function with the cursor's current position int X = Cursor.Position.X; int Y = Cursor.Position.Y; mouse_event(MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, X, Y, 0, 0); } Aufruf: private void anfangen_Click(object sender, EventArgs e) { Point startingPoint = panel1.Location; startingPoint.Offset(500, 200); Cursor.Position = PointToScreen(startingPoint); DoMouseClick(); SendKeys.Send("{RIGHT}"); } Ich hoffe das es kein einfacher Tippfehler ist, denn das wär bissel doof ^^ Vielen Dank für eure Hilfe! Bin leider noch ein Anfänger in C# Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.