Unity3D模擬滑鼠輸入
using UnityEngine;
using System.Collections;
using System.Windows.Forms;
using System;
using System.Runtime.InteropServices;
public class RecordFunction : MonoBehaviour
{
[DllImport("user32.dll")]
private static extern int SetCursorPos(int x, int y);
[DllImport("user32.dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
//下面這個列舉也來自user32.dll
[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
}
bool hasMouseDown = false;
void Start () {
//模擬鍵盤輸入
SendKeys.Send("{BACKSPACE}");
}
void Update () {
if (Input.GetKey(KeyCode.Backspace))
{
Debug.Log("backspace is pressed");
}
if (!hasMouseDown)
{
if (Time.time > 2)
{
//模擬滑鼠在一個按鈕上點選,這個按鈕會呼叫下面的CloseSelf()方法
SetCursorPos(20,20);
mouse_event(MouseEventFlag.LeftDown, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
hasMouseDown = true;
}
}
}
public void CloseSelf()
{
UnityEngine.Application.Quit();
}
}