这是我年轻时制作的一些鼠标和键盘处理程序,用于在游戏屏幕上找到颜色并单击||右键单击+选项:P
也许有些代码可能对你有帮助,即使它是法语的......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Abyte0
{
public partial class ClavierVirtuel
{
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern int FindWindow(string _ClassName, string _WindowName);
[DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
private static extern int SetForegroundWindow(int hwnd);
//int handle = FindWindow(null, "Facebook - Windows Internet Explorer");
//Give focus to the screen with the wanted name
public static void DonnerFocus(string pNomFenetre)
{
//Get the handle of the app you want to send keys to
int handle = FindWindow(null, pNomFenetre);
//Set it to the foreground
SetForegroundWindow(handle);
}
//write the string
public static void Ecrire(string pPhrase)
{
//Send the keys on over
SendKeys.SendWait(pPhrase);
}
//write a string and press enter
public static void ecrire_Enter(string pPhrase)
{
foreach (char lettre in pPhrase)
{
SendKeys.SendWait(lettre.ToString());
}
System.Threading.Thread.Sleep(10);
SendKeys.SendWait("{ENTER}");
}
}
}
和
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;
namespace Abyte0
{
static class MouseHandler
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool SetCursorPos(int X, int Y);
[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 static void moveMouse(ref int currentx, ref int currenty, string whattodo, int pNombre)
{
switch (whattodo)
{
case "addX":
for (int i = 0; i < pNombre; i++)
{
currentx++;
SetCursorPos(currentx + Form1.m_Border_x, currenty + Form1.m_Border_y);
}
break;
case "addY":
for (int i = 0; i < pNombre; i++)
{
currenty++;
SetCursorPos(currentx + Form1.m_Border_x, currenty + Form1.m_Border_y);
}
break;
case "remX":
for (int i = 0; i < pNombre; i++)
{
currentx--;
SetCursorPos(currentx + Form1.m_Border_x, currenty + Form1.m_Border_y);
}
break;
case "remY":
for (int i = 0; i < pNombre; i++)
{
currenty--;
SetCursorPos(currentx + Form1.m_Border_x, currenty + Form1.m_Border_y);
}
break;
default:
break;
}
}
#region Mouse Left, Right1, Right2 Clicks
public static void DoMouseLeftClick(int nx, int ny)
{
Random objRandom = new Random();
SetCursorPos(nx + Form1.m_Border_x, ny + Form1.m_Border_y);
mouse_event(MOUSEEVENTF_LEFTDOWN, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
Thread.Sleep(objRandom.Next(1, 332));
mouse_event(MOUSEEVENTF_LEFTUP, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
// Thread.Sleep(objRandom.Next(objRandom.Next(10, objRandom.Next(180, 600)), objRandom.Next(objRandom.Next(666, 4000), 5102)));
Handler.getFocus();
}
public static void DoMouseLeftClick(int[] pTab)
{
int nx = pTab[0];
int ny = pTab[1];
Random objRandom = new Random();
SetCursorPos(nx + Form1.m_Border_x, ny + Form1.m_Border_y);
mouse_event(MOUSEEVENTF_LEFTDOWN, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
Thread.Sleep(objRandom.Next(1, 332));
mouse_event(MOUSEEVENTF_LEFTUP, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
// Thread.Sleep(objRandom.Next(objRandom.Next(10, objRandom.Next(180, 600)), objRandom.Next(objRandom.Next(666, 4000), 5102)));
Handler.getFocus();
}
public static void DoMouseRightClickOp1(int nx, int ny)
{
Random objRandom = new Random();
SetCursorPos(nx + Form1.m_Border_x, ny + Form1.m_Border_y);
mouse_event(MOUSEEVENTF_RIGHTDOWN, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
Thread.Sleep(objRandom.Next(6, 237));
mouse_event(MOUSEEVENTF_RIGHTUP, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
Handler.getFocus();
Thread.Sleep(objRandom.Next(1, 332));
moveMouse(ref nx, ref ny, "addY", 20);
DoMouseLeftClick(nx, ny);
}
public static void DoMouseRightClickOp2(int nx, int ny)
{
Random objRandom = new Random();
SetCursorPos(nx + Form1.m_Border_x, ny + Form1.m_Border_y);
mouse_event(MOUSEEVENTF_RIGHTDOWN, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
Thread.Sleep(objRandom.Next(6, 237));
mouse_event(MOUSEEVENTF_RIGHTUP, nx + Form1.m_Border_x, ny + Form1.m_Border_y, 0, 0);
Handler.getFocus();
Thread.Sleep(objRandom.Next(1, 332));
moveMouse(ref nx, ref ny, "addY", 25);
DoMouseLeftClick(nx, ny);
}
#endregion
public static void DoSimpleClickNoFocus(int x,int y)
{
Random objRandom = new Random();
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0);
Thread.Sleep(objRandom.Next(7, 258));
mouse_event(MOUSEEVENTF_LEFTUP, x,y, 0, 0);
}
}
}