166 lines
5.3 KiB
Batchfile
166 lines
5.3 KiB
Batchfile
@echo off
|
|
REM === Automatic Mouse Mover ===
|
|
setlocal enabledelayedexpansion
|
|
|
|
echo ========================================
|
|
echo Automatic Mouse Mover
|
|
echo ========================================
|
|
echo.
|
|
echo This script will move your mouse cursor slightly
|
|
echo to prevent screen lock or idle status.
|
|
echo.
|
|
echo ========================================
|
|
echo.
|
|
|
|
REM Get interval
|
|
:GET_INTERVAL
|
|
set /p INTERVAL="Enter interval in seconds (3-10): "
|
|
|
|
REM Validate interval
|
|
if %INTERVAL% LSS 3 (
|
|
echo Invalid! Minimum is 3 seconds.
|
|
goto GET_INTERVAL
|
|
)
|
|
if %INTERVAL% GTR 10 (
|
|
echo Invalid! Maximum is 10 seconds.
|
|
goto GET_INTERVAL
|
|
)
|
|
|
|
echo.
|
|
REM Get duration
|
|
echo Duration options:
|
|
echo [1] Continuous (press Ctrl+C to stop)
|
|
echo [2] Specific duration in minutes
|
|
echo.
|
|
set /p DURATION_CHOICE="Select option (1-2): "
|
|
|
|
if "%DURATION_CHOICE%"=="1" (
|
|
set DURATION_MINUTES=0
|
|
set DURATION_TEXT=Continuous
|
|
) else if "%DURATION_CHOICE%"=="2" (
|
|
set /p DURATION_MINUTES="Enter duration in minutes: "
|
|
set DURATION_TEXT=!DURATION_MINUTES! minutes
|
|
) else (
|
|
echo Invalid selection!
|
|
timeout /t 2 >nul
|
|
goto GET_INTERVAL
|
|
)
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo Configuration:
|
|
echo - Interval: %INTERVAL% seconds
|
|
echo - Duration: %DURATION_TEXT%
|
|
echo - Movement: Random 1-5 pixels
|
|
echo - Auto-pause when you move the mouse
|
|
echo ========================================
|
|
echo.
|
|
echo Press Ctrl+C to stop at any time.
|
|
echo.
|
|
pause
|
|
|
|
cls
|
|
echo Starting Mouse Mover...
|
|
echo.
|
|
|
|
REM Create PowerShell script
|
|
(
|
|
echo $code = @"
|
|
echo using System;
|
|
echo using System.Runtime.InteropServices;
|
|
echo public class MouseMover {
|
|
echo [DllImport("user32.dll")]
|
|
echo public static extern bool GetCursorPos(out POINT lpPoint^);
|
|
echo [DllImport("user32.dll")]
|
|
echo public static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize^);
|
|
echo [StructLayout(LayoutKind.Sequential)]
|
|
echo public struct INPUT {
|
|
echo public uint type;
|
|
echo public MOUSEINPUT mi;
|
|
echo }
|
|
echo [StructLayout(LayoutKind.Sequential)]
|
|
echo public struct MOUSEINPUT {
|
|
echo public int dx;
|
|
echo public int dy;
|
|
echo public uint mouseData;
|
|
echo public uint dwFlags;
|
|
echo public uint time;
|
|
echo public IntPtr dwExtraInfo;
|
|
echo }
|
|
echo public struct POINT {
|
|
echo public int X;
|
|
echo public int Y;
|
|
echo }
|
|
echo public const uint INPUT_MOUSE = 0;
|
|
echo public const uint MOUSEEVENTF_MOVE = 0x0001;
|
|
echo }
|
|
echo "@
|
|
echo Add-Type -TypeDefinition $code
|
|
echo $interval = %INTERVAL%
|
|
echo $durationMinutes = %DURATION_MINUTES%
|
|
echo $random = New-Object System.Random
|
|
echo $startTime = Get-Date
|
|
echo $moveCount = 0
|
|
echo Write-Host ""
|
|
echo Write-Host "========================================" -ForegroundColor Green
|
|
echo Write-Host "Mouse Mover Active (Hardware Simulation)" -ForegroundColor Green
|
|
echo Write-Host "========================================" -ForegroundColor Green
|
|
echo Write-Host ""
|
|
echo Write-Host "Monitoring mouse movement..."
|
|
echo Write-Host "Press Ctrl+C to stop"
|
|
echo Write-Host ""
|
|
echo $lastPos = New-Object MouseMover+POINT
|
|
echo [void][MouseMover]::GetCursorPos([ref]$lastPos^)
|
|
echo while ($true^) {
|
|
echo if ($durationMinutes -gt 0^) {
|
|
echo $elapsed = ((Get-Date^) - $startTime^).TotalMinutes
|
|
echo if ($elapsed -ge $durationMinutes^) {
|
|
echo Write-Host ""
|
|
echo Write-Host "Duration reached. Stopping..." -ForegroundColor Yellow
|
|
echo break
|
|
echo }
|
|
echo }
|
|
echo $currentPos = New-Object MouseMover+POINT
|
|
echo [void][MouseMover]::GetCursorPos([ref]$currentPos^)
|
|
echo if ($currentPos.X -ne $lastPos.X -or $currentPos.Y -ne $lastPos.Y^) {
|
|
echo $lastPos = $currentPos
|
|
echo $time = Get-Date -Format 'HH:mm:ss'
|
|
echo Write-Host "[$time] User moved mouse - Paused" -ForegroundColor Cyan
|
|
echo Start-Sleep -Seconds $interval
|
|
echo continue
|
|
echo }
|
|
echo $moveX = $random.Next(-5, 6^)
|
|
echo $moveY = $random.Next(-5, 6^)
|
|
echo $input = New-Object MouseMover+INPUT
|
|
echo $input.type = [MouseMover]::INPUT_MOUSE
|
|
echo $input.mi.dx = $moveX
|
|
echo $input.mi.dy = $moveY
|
|
echo $input.mi.dwFlags = [MouseMover]::MOUSEEVENTF_MOVE
|
|
echo $input.mi.time = 0
|
|
echo $input.mi.dwExtraInfo = [IntPtr]::Zero
|
|
echo $inputs = @($input^)
|
|
echo [void][MouseMover]::SendInput(1, $inputs, [System.Runtime.InteropServices.Marshal]::SizeOf($input^)^)
|
|
echo $moveCount++
|
|
echo $time = Get-Date -Format 'HH:mm:ss'
|
|
echo Write-Host "[$time] Auto-moved mouse ($moveCount moves)" -ForegroundColor Green
|
|
echo [void][MouseMover]::GetCursorPos([ref]$lastPos^)
|
|
echo Start-Sleep -Seconds $interval
|
|
echo }
|
|
echo Write-Host ""
|
|
echo Write-Host "========================================" -ForegroundColor Yellow
|
|
echo Write-Host "Mouse Mover Stopped" -ForegroundColor Yellow
|
|
echo Write-Host "Total moves: $moveCount" -ForegroundColor Yellow
|
|
echo Write-Host "========================================" -ForegroundColor Yellow
|
|
) > "%TEMP%\MouseMover.ps1"
|
|
|
|
REM Execute PowerShell script
|
|
powershell -NoProfile -ExecutionPolicy Bypass -File "%TEMP%\MouseMover.ps1"
|
|
|
|
REM Cleanup
|
|
del "%TEMP%\MouseMover.ps1" >nul 2>&1
|
|
|
|
echo.
|
|
echo ========================================
|
|
echo Script finished
|
|
echo ========================================
|
|
pause |