【问题标题】:Can you change the Visual Effects Performance Settings from an application?您可以从应用程序更改视觉效果性能设置吗?
【发布时间】:2012-03-27 20:36:32
【问题描述】:

我正在修改在以下位置找到的注册表值:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects。

出于我的目的,它可以存储 0、1、2 的 DWORD 值。这些值对应于 Windows 7 中性能选项下的视觉效果单选按钮;分别是“让 Windows 选择最适合我的计算机的”、“调整以获得最佳外观”和“调整以获得最佳性能”。

如果您使用实际的“性能选项”屏幕并进行更改并单击应用,Windows 中的视觉设置将按预期重新加载。如果您以编程方式更改该值,它不会做任何事情。

有没有办法在代码中实现这一点?

【问题讨论】:

  • 这个值只是为了展示。它只是告诉控制面板在您下次打开它时选择哪个单选按钮。它实际上并没有任何事情。
  • @RaymondChen 很高兴知道!有没有办法实现我的目标?
  • 请问您为什么要以编程方式尝试修改应该是用户配置选项的内容?这是应用程序永远不需要做的事情,因为它基于运行 Windows 的特定硬件的用户体验。 (如果这是您的应用应该能够执行的操作,那么将有一个已发布的 API 可用于执行此操作,或者 SystemParametersInfo 中的标志值来更改它。没有。)
  • 不清楚你的目标是什么。您想更改性能选项,还是只想使用单选按钮?要更改性能选项,请使用相应的 API,例如 SystemParametersInfo(SPI_SETNONCLIENTANIMATION)
  • @KenWhite 它需要以编程方式设置,以便我可以在运行一系列要求尽可能接近毫秒精度的医学测试之前进行设置。我们通过广泛的测试发现,“让 Windows 处理”会导致计时不准确性增加。此外,用户不是很懂计算机,能够给他们一个“嘿,傻傻地点击这个按钮”选项将是最佳选择。

标签: .net windows winapi registry


【解决方案1】:

扩展 Raymond 的评论:

视觉效果选项卡有十五个单独的性能选项。单选按钮“调整以获得最佳外观”将它们全部打开。 “调整以获得最佳性能”将它们全部关闭。 “让 Windows 选择最适合我的计算机的”大概是根据 Windows 体验指数或类似方法设置它们。

您将无法从应用程序中实现“让 Windows 选择最适合我的计算机的内容”,或者至少不容易实现。但是您应该能够通过使用SystemParametersInfo 并设置十五个单独选项中的每一个来实现其他两个选项。

您需要确定与“视觉效果”选项卡中的选项相对应的 15 种设置:有些设置相当明显,有些则需要反复试验。希望如果您将单选按钮设置为“自定义”,当您打开“视觉效果”选项卡时,您会看到您的应用程序所做的更改,因此您将能够判断您是否进行了正确的设置。

您可能还想为单选按钮设置注册表值,以便用户在打开控制面板时看到正确的内容。

附录: 对于您描述的场景,您可能需要先阅读每个当前设置,然后再恢复它们。要么读取并恢复注册表设置,要么干脆不碰它。

【讨论】:

  • 早上上班时我一定会尝试一下。谢谢!
【解决方案2】:

据我所知,注册表的工作方式与任何其他存储一样。

当应用程序需要注册表中的值时,它们会检查它。大多数应用程序仅在首次启动时才读取注册表。如果您手动更改其注册表项之一,您通常必须重新启动相关应用程序。即使不需要重新启动,您仍然需要弄清楚如何触发该特定应用程序以重新检索该特定条目。

所以要回答您的问题,没有神奇的“刷新”命令可以将注册表项的当前值推送到相应的应用程序。

现在,您要问的真正问题是“有没有办法强制 Windows 重新加载性能选项?”。我知道没有办法做到这一点。

如果有可用的 WinApi 调用,它可能会让您提供新值,然后它会负责更新注册表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-06
    • 2020-03-22
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多