WakeOnLan.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /// <summary>
  2. /// Copyright (c) 2021 MirzkisD1Ex0 All rights reserved.
  3. /// Code Version 1.0
  4. /// </summary>
  5. using UnityEngine;
  6. using System.Diagnostics;
  7. using System.Text;
  8. using ToneTuneToolkit.Common;
  9. namespace ToneTuneToolkit.WOL
  10. {
  11. /// <summary>
  12. /// 设备冷启动
  13. ///
  14. /// 需要电脑支持WOL
  15. /// 需要在Bios中设置
  16. /// 需要在设备管理器中对网卡设置可唤醒
  17. /// </summary>
  18. public class WakeOnLan : MonoBehaviour
  19. {
  20. public static WakeOnLan Instance;
  21. private static string targetMAC;
  22. private static string targetIP;
  23. private static string targetMask;
  24. private static string targetPort;
  25. private void Awake()
  26. {
  27. Instance = this;
  28. }
  29. private void Start()
  30. {
  31. this.Presetting();
  32. }
  33. private void Presetting()
  34. {
  35. targetMAC = TextLoader.GetJson(WakeOnLanHandler.WOLConfigPath, WakeOnLanHandler.TargetMACName);
  36. targetIP = TextLoader.GetJson(WakeOnLanHandler.WOLConfigPath, WakeOnLanHandler.TargetIPName);
  37. targetMask = TextLoader.GetJson(WakeOnLanHandler.WOLConfigPath, WakeOnLanHandler.TargetMaskName);
  38. targetPort = TextLoader.GetJson(WakeOnLanHandler.WOLConfigPath, WakeOnLanHandler.TargetPortName);
  39. return;
  40. }
  41. /// <summary>
  42. /// 冷启动
  43. /// </summary>
  44. /// <param name="mac"></param>
  45. /// <param name="ip"></param>
  46. /// <param name="mask"></param>
  47. /// <param name="port"></param>
  48. private static void ColdStartDevice(string mac, string ip, string mask, string port = "7")
  49. {
  50. string command = (WakeOnLanHandler.WOLAppPath + "wolcmd " + mac + " " + ip + " " + mask + " " + port).Replace(@"/", @"\");
  51. Process p = new Process();
  52. ProcessStartInfo psi = new ProcessStartInfo();
  53. psi.FileName = "cmd.exe";
  54. psi.UseShellExecute = false;
  55. psi.RedirectStandardError = true;
  56. psi.RedirectStandardInput = true;
  57. psi.RedirectStandardOutput = true;
  58. psi.CreateNoWindow = true;
  59. p.StartInfo = psi;
  60. p.Start();
  61. p.StandardInput.WriteLine(command);
  62. p.StandardInput.AutoFlush = true;
  63. p.StartInfo.StandardErrorEncoding = Encoding.UTF8;
  64. p.StartInfo.StandardOutputEncoding = Encoding.UTF8;
  65. return;
  66. }
  67. /// <summary>
  68. /// 偷懒方法
  69. /// </summary>
  70. public static void LaunchWakeOnLan()
  71. {
  72. ColdStartDevice(targetMAC, targetIP, targetMask, targetPort);
  73. return;
  74. }
  75. }
  76. }