[C#] Mouse Move nur in Form

10/19/2013 19:53 Ramon0205#1
Hallo, ich bin gerade dabei ein Bot für ein Spiel zu schreiben und nun bin ich bei dem Autologin. Dazu möchte ich das er meine Maus an eine bestimmte stelle in meiner Form bewegt. Das bewegen etc. funktioniert schon. Aber das fixiern auf der Form nicht so wirklich. Der Sinn dahinter ist, das ich die form egal wo hin schieben kann und es trz. funktioniert weil er den Pixel 0,0 in meiner Form sucht und dann von da aus z.B. den Pixel 395,900. Kann mir da jemand helfen?

Mfg Ramon0205

*PUSH*
10/20/2013 11:05 qkuh#2
Nochmal auf deutsch bitte.
10/21/2013 08:29 Syc#3
Wenn du doch schon so deine Maus bewegen kannst, frag doch ab, wo sich deine Form auf dem Bildschirm befindet und rechne von dort an weiter.

Quote:
Originally Posted by qkuh View Post
Nochmal auf deutsch bitte.
Er will den Mauszeiger relativ zu seiner Form setzen.
10/21/2013 10:43 #SoNiice#4
Du könntest das ganze direkt als Hidden-Bot erarbeiten, was dann so aussehen könnte:

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace lolhiddenbugclickftw
{
    public partial class Form1 : Form
    {
        public const int WM_LBUTTONDOWN = 0x0201;
        public const int WM_LBUTTONUP = 0x0202;

        [DllImport("user32.dll")]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("user32.dll")]
        public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        Thread rpThread;

        private static IntPtr MakeLParam(int LoWord, int HiWord)
        {
            return (IntPtr)((HiWord << 16) | (LoWord & 0xffff));
        }

        public Form1()
        {
            InitializeComponent();
            rpThread = new Thread(new ThreadStart(giveRP));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            rpThread.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            rpThread.Abort();
        }

        private void giveRP()
        {
            while (true)
            {
                // Payment Method
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONDOWN, IntPtr.Zero, MakeLParam(226, 408));
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONUP, IntPtr.Zero, MakeLParam(226, 408));
                Thread.Sleep(1000);
                // Price
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONDOWN, IntPtr.Zero, MakeLParam(812, 263));
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONUP, IntPtr.Zero, MakeLParam(812, 263));
                Thread.Sleep(5000);
                // ToU
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONDOWN, IntPtr.Zero, MakeLParam(503, 339));
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONUP, IntPtr.Zero, MakeLParam(503, 339));
                // Remember
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONDOWN, IntPtr.Zero, MakeLParam(503, 358));
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONUP, IntPtr.Zero, MakeLParam(503, 358));
                // Continue - 1
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONDOWN, IntPtr.Zero, MakeLParam(743, 278));
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONUP, IntPtr.Zero, MakeLParam(743, 278));
                Thread.Sleep(5000);
                // Continue - 2
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONDOWN, IntPtr.Zero, MakeLParam(644, 301));
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONUP, IntPtr.Zero, MakeLParam(644, 301));
                Thread.Sleep(5000);
                // Back
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONDOWN, IntPtr.Zero, MakeLParam(639, 416));
                PostMessage(FindWindow("ApolloRuntimeContentWindow", "PVP.net Client"), WM_LBUTTONUP, IntPtr.Zero, MakeLParam(639, 416));
                Thread.Sleep(5000);
            }
        }
    }
}
Für die FindWindow-Methode kannst du am besten AutoIt nutzen:

[Only registered and activated users can see links. Click Here To Register...]

Class wäre der erste Parameter und Title der zweite.
10/21/2013 10:48 SwarN#5
---

Hühnchenkopf
hat's ausführlich mit Code beantwortet daher brauchst du meine Antwort nicht mehr.
10/21/2013 11:56 #SoNiice#6
Mein Code klickt übrigens direkt auf die Position, die Maus wird nicht bewegt, es wird einfach einfach ein Mouse- down / up simuliert auf die Position die angegeben wird, demnach musst du nur noch deine Eingaben tätigen.