Как программно отключить «Анимационные эффекты» в Windows 11?

Вопрос или проблема

Контекст

Когда я получаю доступ к ms-settings:easeofaccess-visualeffectswindows.immersivecontrolpanel_10.0.8.1000), я вижу свойство “Анимационные эффекты”:

Скриншот

Переключение отключает или [повторно] включает анимации для, по крайней мере, приложений WinUI ≥ 2.

Запрос

Как я могу программно переключить это?

Обоснование
  1. В таких проблемах, как discuss.kde.org/t/21697/7, возможность предоставления воспроизводимых шагов воспроизведения помогла бы ответственному за триаж.

  2. В таких проблемах, как github.com/microsoft/winget-cli/issues/3494#issue-1833438918, возможность объяснения, как передать предпочтение системе, была бы полезной.

Диагностика

Я попытался сделать то, что предлагает revisions/1246803/1:

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)

…что возвращает $? и $True.

Однако, как заявляет #comment2976607_1246803:

Это не влияет на “Анимационные эффекты” в ms-settings:easeofaccess-visualeffects в windows.immersivecontrolpanel_10.0.8.1000.

(Отсутствие) Дубликатов

Это показывает мне, что это предпочтение отличается от того, которое задаётся в связанном вопросе этого ответа. Следовательно, я задал этот вопрос отдельно.

Окружение
  1. Приложение
    1. #!/usr/bin/env pwsh
      #Requires -PSEdition Core
      #Requires -version 7.6.0
      
      If ([OperatingSystem]::IsWindows() -Eq $True) {
          Get-AppxPackage -Name windows.immersivecontrolpanel | Select-Object -Property @(
              'Name',
              'Version'
          ) | Format-List
      }
      
    2. Name    : windows.immersivecontrolpanel
      Version : 10.0.8.1000
      
  2. ОС
    1. #!/usr/bin/env pwsh
      #Requires -PSEdition Core
      #Requires -version 7.6.0
      
      If ([OperatingSystem]::IsWindows() -Eq $True) {
          Get-ComputerInfo | Select-Object -Property @(
              'OsName',
              'OsOperatingSystemSKU',
              'OsVersion',
              'OsBuildNumber'
          ) | Format-List
      }
      
    2. OsName               : Microsoft Windows 11 Pro
      OsOperatingSystemSKU : 48
      OsVersion            : 10.0.26120
      OsBuildNumber        : 26120
      

Ответ или решение

Для решения задачи по программному отключению "Анимационных эффектов" в Windows 11, необходимо понять, как данная функция встроена в операционную систему, и какие методы можно использовать для изменения ее состояния. Прежде всего, следует учесть, что "Анимационные эффекты" являются частью настроек доступности в Windows, и они предназначены для улучшения визуального восприятия интерфейса, особенно для пользователей с особыми потребностями. Однако, в ряде случаев требуется отключить эти эффекты, чтобы минимизировать нагрузку на систему или для создания более стабильной среды для тестирования и отладки приложений.

Теория

В Windows 11 настройки "Анимационных эффектов" управляются через раздел параметров "Специальные возможности". Внутренние API, которые управляют этими эффектами, тесно связаны с графическими компонентами Windows. Хотя традиционные подходы через DirectX или Windows API (как показано в вашем PowerShell-примере) могут не всегда влиять на конкретные установки современной панели управления Windows, важно понимать, что многие настройки могут сохраняться в реестре, а также изменяться через командлеты PowerShell или скрипты.

Пример

Пример из PowerShell, который вы привели, использует вызов функции из библиотеки user32.dll для установки параметров системной анимации. Однако, как было отмечено, этот метод не влияет на конкретные настройки "Анимационных эффектов", доступные через секцию ms-settings:easeofaccess-visualeffects. Это указывает на то, что данный параметр управляется отдельно и, возможно, связан с другими элементами конфигурации системы, такими как реестр или особые политики.

Применение

Теперь приступим к конкретным действиям, которые могут помочь в решении данной задачи. Рассмотрим различные методы, которые могут быть использованы для достижения цели.

  1. Изменение системного реестра Windows:
    Некоторые параметры операционной системы могут быть изменены через реестр. Вам необходимо открыть редактор реестра (regedit) и перейти к ключам, связанным с анимациями. Например:

    • HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMask
    • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects

    Изменение значений в этих ключах может повлиять на отображение анимаций. Однако, будьте осторожны: изменение реестра может отразиться на стабильности системы.

  2. Использование командлетов PowerShell:
    В PowerShell есть возможность изменения настроек анимации через соответствующие командлеты или скрипты. Вы можете создать скрипт, который обращается к объектам управления системой и изменяет значения, связанные с анимациями. Например, через командлеты, использующие измененные ключи реестра.

  3. Создание кастомизированного приложения:
    Если вы обладаете навыками программирования, вы можете создать утилиту, которая модифицирует нужные параметры. Это можно сделать на языке C# с использованием пространства имен Windows API для вызова соответствующих функций. Программы, написанные с использованием .NET, могут манипулировать системными настройками, комбинируя вызовы API и прямые изменения реестра.

  4. Использование групповых политик или политик безопасности системы:
    В случае корпоративной среды можно внедрить изменения через групповые политики, доступ к которым осуществим через редактор групповых политик (gpedit.msc) или системные настройки для облегчения доступа. Это особенно полезно при необходимости применения изменений сразу на нескольких компьютерах.

  5. Открытые предложения к Microsoft или исследование существующих инструментов:
    Если прямые методы не дают нужного результата, можно рассмотреть использование открытых рекомендаций или утилит, разработанных сообществом для этих целей. Такие утилиты могут иметь открытый исходный код, что позволяет вносить дополнительные изменения под специфические нужды.

Важно удостовериться, что любые изменения, которые вы планируете внедрить, прошли тестирование в безопасной среде, чтобы избежать непредвиденных последствий для стабильности операционной системы. Окончательное решение должно обеспечивать баланс между необходимостью управления рабочей средой и сохранением ее функциональности.

Оцените материал
Добавить комментарий

Капча загружается...