2

Я хотел бы отключить анимацию в Windows 10, в частности анимацию для максимизации / минимизации окон. Не похоже, чтобы у каждого ключа был свой параметр реестра, и я не вижу его в этом списке значений: https://technet.microsoft.com/en-us/library/cc957204.aspx

Это возможно, или это то, что я должен был бы сделать вручную?

Было бы хорошо, если бы я мог отключить анимацию в целом, но я был бы рад, если бы я мог просто написать скрипт, который отключил бы только максимизацию / минимизацию анимации:

Запуск этого решения не работает:

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

Эта опция требует выхода из системы / входа в систему или перезагрузки, в отличие от ручного метода, который вступает в силу немедленно (предпочтительно).

1 ответ1

5

Вы можете использовать PowerShell! Нам нужно вызвать SystemParametersInfo с соответствующим образом настроенной структурой ANIMATIONINFO , поскольку эта функция Windows API отправляет сообщение окна, в результате которого изменение вступает в силу немедленно. Я написал этот сценарий:

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)

Часть C # определяет структуру и функцию, которую нам нужно вызвать. Затем скрипт создает структуру конфигурации анимации и, наконец, вызывает функцию. 0x49 - это код, который сообщает SystemParametersInfo чтобы установить настройку анимации, а 3 в последнем параметре указывает, что мы хотим, чтобы и профиль пользователя обновлялся, и отправлялось уведомление об изменении настройки.

Чтобы использовать скрипт, сохраните его как файл .ps1 , например, windowanim.ps1 . Следуйте инструкциям в разделе «Включение сценариев» вики-тега PowerShell, чтобы разрешить выполнение сценария, затем вы можете запустить эту команду из пакетного файла, чтобы отключить анимацию окна:

powershell -c .\windowanim.ps1 $false

Если вы хотите включить анимацию, укажите вместо сценария $true .

Если вызов функции успешен, вы увидите, что True напечатано на консоли, независимо от того, включена ли анимация или нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .