模擬鼠標移動程序實現——解決域控制器策略強制電腦鎖屏問題


定時讓鼠標微微動一下,浮動不要太大(移動一個像素就可以了),這樣就達到持續讓屏幕常亮的效果。以 Windows 系統和 C# 語言為例,C# 通過DllImport 調用 win32 關於鼠標控制的函數,DllImport 是 System.Runtime.InteropServices 命名空間下的屬性類,要先引入該命名空間。

mouse_event 參數含義:

dwFlags: long 常量,鼠標操作類型,可組合(取 |) 
dx: x 軸移動像素 
dy: y 軸移動像素 
cButtons: 0 
dwExtroInfo: 0

dwFlags 常用取值:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM