نوشته شده توسط
mosy_m.s
متد "موس اونت" 5 تا ورودی uint داره ولی x و y از نوع int هستند. می گه ناهماهنگه.
یه Cast کم داشت. این شکلی بنویس:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
[DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);
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 Form1()
{
InitializeComponent();
MouseDown += (sender, args) => MessageBox.Show(string.Format("form clicked at({0},{1})", args.X, args.Y));
}
public static void LeftMouseClick(int newX, int newY, int previousX, int previousY)
{
SetCursorPos(newX, newY);
mouse_event(MOUSEEVENTF_LEFTDOWN, (uint)newX, (uint)newY, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, (uint)newX, (uint)newY, 0, 0);
SetCursorPos(previousX, previousY);
}
private void button1_Click(object sender, EventArgs e)
{
int X = Location.X + 20;
int Y = Location.Y + 20;
LeftMouseClick(X, Y, Cursor.Position.X, Cursor.Position.Y);
}
بجای X و Y مختصات مورد نظر خودتو بذار. پروژه رو هم برات اتچ کردم.