定時讓鼠標微微動一下,浮動不要太大(移動一個像素就可以了),這樣就達到持續讓屏幕常亮的效果。以 Windows 系統和 C# 語言為例,C# 通過DllImport 調用 win32 關於鼠標控制的函數,DllImport 是 System.Runtime.InteropServices 命名空間下的屬性類,要先引入該命名空間。
mouse_event 參數含義:
dwFlags: long 常量,鼠標操作類型,可組合(取 |)
dx: x 軸移動像素
dy: y 軸移動像素
cButtons: 0
dwExtroInfo: 0dwFlags 常用取值:
MOUSEEVENTF_MOVE = 0x0001; //模擬鼠標移動
MOUSEEVENTF_LEFTDOWN = 0x0002; //模擬鼠標左鍵按下
MOUSEEVENTF_LEFTUP = 0x0004; //模擬鼠標左鍵抬起
MOUSEEVENTF_ABSOLUTE = 0x8000; //鼠標絕對位置
MOUSEEVENTF_RIGHTDOWN = 0x0008; //模擬鼠標右鍵按下
MOUSEEVENTF_RIGHTUP = 0x0010; //模擬鼠標右鍵抬起
MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模擬鼠標中鍵按下
MOUSEEVENTF_MIDDLEUP = 0x0040; //模擬鼠標中鍵抬起
using System; using System.Runtime.InteropServices; using System.Timers; namespace MouseMoveTimer { class Program { [DllImport("user32")] private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo); private const int MOUSEEVENTF_MOVE = 0x0001; //[DllImport("user32")] //public static extern bool GetCursorPos(out Point pt); static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Green; // 1. 輸入鼠標定時移動的時間間隔(秒) Console.WriteLine("請輸入定時器的間隔時間秒數: "); string timerInterval = Console.ReadLine(); // 2. 定義定時器 int TimerInterval; if (Int32.TryParse(timerInterval, out TimerInterval)) { Timer timer = new System.Timers.Timer(); // 定義定時器 timer.Enabled = true; // 啟用定時器 timer.Interval = 1000 * TimerInterval; // 設定時間間隔(毫秒:1秒 = 1000毫秒) timer.Elapsed += new ElapsedEventHandler(MoveMouseHandler); // 等到間隔時間到,執行 Console.WriteLine("成功干擾域控制器策略強制電腦鎖屏,關閉后不干擾!"); } else { Console.WriteLine("輸入錯誤: 請輸入數字!"); } // 3. 保持程序不退出 Console.ReadKey(); } /// <summary> /// 定時器方法體 ,讓鼠標沿 x、y 坐標移動一個像素 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected static void MoveMouseHandler(object sender, System.Timers.ElapsedEventArgs e) { //Point p; // 將鼠標移動一個像素 mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0); //GetCursorPos(out p); //Console.WriteLine($"({p.X},{p.Y})"); } } }
摘錄 https://blog.csdn.net/water_0815/article/details/54959062