KeyPressSimulator.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /// <summary>
  2. /// Copyright (c) 2021 MirzkisD1Ex0 All rights reserved.
  3. /// Code Version 1.0
  4. /// </summary>
  5. using UnityEngine;
  6. using System.Runtime.InteropServices;
  7. using ToneTuneToolkit.Common;
  8. namespace ToneTuneToolkit.Other
  9. {
  10. /// <summary>
  11. /// 模拟物理按键
  12. /// </summary>
  13. public class KeyPressSimulator : MonoBehaviour
  14. {
  15. [DllImport("user32.dll", EntryPoint = "keybd_event")]
  16. public static extern void keybd_event(
  17. byte bvk, // 虚拟键值,ASCII
  18. byte bScan, // 0
  19. int dwFlags, // 0按下,1按住,2释放
  20. int dwExtraInfo // 0
  21. );
  22. /// <summary>
  23. /// 模拟按下物理按键
  24. /// </summary>
  25. /// <param name="asciiKeyCode">按键ASCII码</param>
  26. /// <param name="keyFlags">0按下/1按住/2释放</param>
  27. public static void KeyAction(int asciiKeyCode, int keyFlags)
  28. {
  29. if (keyFlags > 2 || keyFlags < 0)
  30. {
  31. TipTools.Error("[KeyPressSimulator] KeyFlags Error, check it again.");
  32. return;
  33. }
  34. keybd_event((byte)asciiKeyCode, 0, keyFlags, 0);
  35. return;
  36. }
  37. }
  38. }