# Mover Utilidad para Windows que evita que el equipo se bloquee o entre en suspensión moviendo el puntero del ratón **solo cuando el usuario lleva un tiempo sin usar el teclado ni el ratón**. En cuanto se detecta uso real, el movimiento se detiene y se vuelve a esperar. ## Contenido | Fichero | Descripción | |--------------|-------------| | `Mover.ps1` | Implementación en PowerShell. Sin dependencias externas. | ## Requisitos - Windows (usa las APIs `user32`/`kernel32`). - Windows PowerShell 5.1 o PowerShell 7. ## Uso de `Mover.ps1` ```powershell powershell -ExecutionPolicy Bypass -File .\Mover.ps1 ``` ### Parámetros | Parámetro | Por defecto | Descripción | |----------------------|-------------|-------------| | `-TiempoInactividad` | `180` | Segundos sin uso de teclado/ratón antes de empezar a mover. | | `-DesplazamientoMin` | `150` | Distancia mínima (píxeles) de cada deslizamiento. | | `-DesplazamientoMax` | `300` | Distancia máxima (píxeles) de cada deslizamiento. | | `-DuracionMs` | `600` | Duración de la animación de cada deslizamiento. | Ejemplo de prueba rápida: ```powershell powershell -ExecutionPolicy Bypass -File .\Mover.ps1 -TiempoInactividad 10 ``` ### Mensajes ``` [07:45:57] Inicializando... [07:45:58] Mover iniciado. Esperando 180 s de inactividad (Ctrl+C para salir). [07:49:01] Inactividad detectada: iniciando movimiento del ratón. [07:50:12] Actividad del usuario detectada: movimiento detenido. ``` Para detenerlo: `Ctrl+C` o cerrar la ventana. ### Acceso directo Se puede crear un acceso directo con: - **Destino:** `C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -File "D:\Toni\Desarrollo\Mover\Mover.ps1"` - **Ejecutar:** Minimizada. ## Funcionamiento 1. Al arrancar cierra cualquier instancia anterior de `Mover.ps1` (varias instancias se interpretarían mutuamente sus movimientos como actividad del usuario). 2. Consulta la inactividad con `GetLastInputInfo`/`GetTickCount`. 3. Superado el umbral, desliza el puntero con una animación suavizada mediante `SendInput` (coordenadas absolutas), lo que genera entrada real y evita la aceleración del puntero. El destino se mantiene dentro del monitor actual. 4. Tras cada deslizamiento guarda el instante de la última entrada; si cambia, ha sido el usuario y se detiene. Si el usuario mueve el ratón durante la animación, ésta se interrumpe. ## Notas - La primera compilación de `Add-Type` puede tardar hasta ~20 s en un proceso nuevo. - El fichero `Mover.ps1` debe guardarse en **UTF-8 con BOM** para que Windows PowerShell 5.1 muestre correctamente las tildes.