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