¿Puedo desactivar las animaciones de Windows 10 con un archivo por lotes?

2

Me gustaría deshabilitar las animaciones en Windows 10, específicamente animaciones para maximizar / minimizar ventanas. No parece que cada clave tenga su propia configuración de registro, y no la veo en esta lista de valores: https://technet.microsoft.com/en-us/library/cc957204.aspx

¿Es esto posible o es algo que tendría que hacer manualmente?

Sería bueno si pudiera deshabilitar las animaciones en general, pero estaría feliz si incluso pudiera escribir un script que deshabilitara solo las animaciones de maximizar / minimizar:

ingrese la descripción de la imagen aquí

Ejecutar esta solución no funciona:

REG ADD "HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics" /v MinAnimate /t REG_SZ /d 0 /f >nul 2>&1

Esta opción requiere un cierre de sesión / inicio de sesión o reinicio , a diferencia del método manual que entra en vigencia de inmediato (preferido).

Entrelazados
fuente
Luego debe calcular manualmente el UsePreferenceMaskregistro y poner el valor en el comando reg add. Para la animación de ventana, el lugar de bit es 1 y el valor 0 lo deshabilita.
Biswapriyo

Respuestas:

5

¡Puedes usar PowerShell! Necesitamos invocar SystemParametersInfocon una ANIMATIONINFOestructura configurada adecuadamente , ya que la función API de Windows envía el mensaje de la ventana que hace que el cambio surta efecto de inmediato. Escribí este script:

Add-Type -TypeDefinition @"
    using System;
    using System.Runtime.InteropServices;
    [StructLayout(LayoutKind.Sequential)] public struct ANIMATIONINFO {
        public uint cbSize;
        public bool iMinAnimate;
    }
    public class PInvoke { 
        [DllImport("user32.dll")] public static extern bool SystemParametersInfoW(uint uiAction, uint uiParam, ref ANIMATIONINFO pvParam, uint fWinIni);
    }
"@
$animInfo = New-Object ANIMATIONINFO
$animInfo.cbSize = 8
$animInfo.iMinAnimate = $args[0]
[PInvoke]::SystemParametersInfoW(0x49, 0, [ref]$animInfo, 3)

La parte C # define la estructura y la función que necesitamos llamar. Luego, el script crea la estructura de configuración de animación y finalmente llama a la función. 0x49es el código que indica SystemParametersInfoque establezca la configuración de animación y 3en el último parámetro especifica que queremos que se actualice el perfil de usuario y que se envíe la notificación de cambio de configuración.

Para usar el script, guárdelo como un .ps1archivo, por ejemplo windowanim.ps1. Siga las instrucciones en la sección Habilitación de scripts de la wiki de etiquetas de PowerShell para permitir la ejecución de scripts, luego puede ejecutar este comando desde un archivo por lotes para deshabilitar las animaciones de ventana:

powershell -c .\windowanim.ps1 $false

Si desea habilitar las animaciones, proporcione $trueel script en su lugar.

Si la invocación de la función es exitosa, verá Trueimpreso en la consola, sin importar si habilitó o deshabilitó las animaciones.

Ben N
fuente
¿Funcionará todo esto sin derechos de administrador?
InterLinked
@InterLinked Sí, creo que sí.
Ben N
Esto es genial, ¡funciona de maravilla y muy rápido! Soy fanático de PowerShell, pero generalmente confío en archivos por lotes para cosas como esta. ¡Supongo que hay algunas cosas que el lote no puede hacer!
InterLinked