[DllImport("user32.dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo); //鼠标事件
[DllImport("user32.dll")] //强制设置鼠标坐标
//设置真实鼠标位置的方法
public static extern int SetCursorPos(int x, int y);
[Flags]
enum MouseEventFlag : uint
{
Move = 0x0001,
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
XDown = 0x0080,
XUp = 0x0100,
Wheel = 0x0800,
VirtualDesk = 0x4000,
Absolute = 0x8000
}
[DllImport("user32.dll", EntryPoint = "keybd_event")]
static extern void keybd_event(
byte bVk, //虚拟键值 对应按键的ascll码十进制值
byte bScan, //0
int dwFlags, //0 为按下,1按住,2为释放
int dwExtraInfo //0
);
/// <summary>
/// 调用此方法即可模拟键盘点击
/// </summary>
/// <param name="i"></param>
private void inputButton(byte i)
{
keybd_event(i, 0, 0, 0);
//keybd_event(66, 0, 1, 0);
keybd_event(i, 0, 2, 0);
Debug.Log("模拟按B");
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
SetCursorPos(1920, 0);
}
if (Input.GetKeyDown(KeyCode.Q))
{
SetCursorPos(1920, 1080);
}
if (Input.GetKeyDown(KeyCode.W))
{
SetCursorPos(0, 1080);
}
if (Input.GetKeyDown(KeyCode.E))
{
SetCursorPos(0, 0);
}
}
UdpClient udpClient;
Thread udpThd;
IPEndPoint ipEndPoint;
string cmdStr = null;
bool isSend = true;
/// <summary>
/// 鼠标右键点击了一下
/// </summary>
public void MouseClickSimulate()
{
mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
}
注意:如果你使用IE浏览器来测试键盘点击,英文字母没有问题,而小键盘的上下左右等都无法正确表示,其他浏览器,文本,PPt都可正常模拟。
键盘多少数字百度即可
代码监听发生的鼠标键盘事件,放入Update
if (Input.anyKeyDown) { foreach (KeyCode keyCode in Enum.GetValues(typeof(KeyCode))) { if (Input.GetKeyDown(keyCode)) { Debug.LogError("Current Key is : " + keyCode.ToString()); } } }