Можно ли отключить анимацию Windows 10 с помощью командного файла?

972
InterLinked

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

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

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

enter image description here

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

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

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

2
Затем вы должны вручную вычислить реестр `UsePreferenceMask` и поместить значение в команду reg add. Для оконной анимации битовый разряд равен 1, а значение 0 отключает его. Biswapriyo 7 лет назад 0

1 ответ на вопрос

5
Ben N

Вы можете использовать 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распечатанные на консоли данные независимо от того, включены ли у вас анимации или нет.

Будет ли это работать без прав администратора? InterLinked 7 лет назад 0
@InterLinked Да, я верю, что это так. Ben N 7 лет назад 0
Это здорово - работает как шарм и очень быстро! Я сам фанат PowerShell, но обычно полагаюсь на командные файлы для таких вещей. Я думаю, есть некоторые вещи, которые пакет не может сделать! InterLinked 7 лет назад 0