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