如何禁用 Windows 7 将窗口移动到屏幕边缘时最大化为全屏的功能(但保持键盘快捷键有效)?

如何禁用 Windows 7 将窗口移动到屏幕边缘时最大化为全屏的功能(但保持键盘快捷键有效)?

我遵循了以下建议: 如何在靠近屏幕边缘时禁用自动最大化/调整窗口大小(aero-snap)?

但它也会关闭按WinKey+键Left/Right Arrow可将窗口调整到箭头键方向上屏幕的一半的功能。

有没有办法独立控制它们?

答案1

尽管可能无法通过 GUI 来实现这一点,但是有一种方法可以通过编程来实现。

您想要的功能是系统参数信息。如果您想了解它的全部功能(它可以访问大量设置),您可以在 MSDN 上阅读有关它的信息,但您会对SPI_SETDOCKMOVING和感兴趣SPI_SETSNAPSIZING

SPI_SETDOCKMOVING通过拖动窗口的标题栏来切换窗口捕捉功能。您可以像这样关闭它:

SystemParametersInfo(SPI_SETDOCKMOVING, 0, NULL, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE)

SPI_SETSNAPSIZING通过使用窗口的顶部和底部边框调整窗口大小来切换窗口捕捉功能。您可以像这样关闭它:

SystemParametersInfo(SPI_SETSNAPSIZING, 0, NULL, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE)

要重新启用任一功能,只需对第二个参数使用非零数字进行相同的调用即可。要使更改在重新启动后不保留,请从最后一个参数中删除 SPIF_UPDATEINIFILE 标志。

为了确保保留键盘快捷键不要在控制面板或注册表中关闭 AeroSnap

细心的人可能会注意到,这里提供的参数并不是文档中预期的那样。具体来说,pvParam 和 uiParams 被切换了。这是我发现的唯一一种在我的计算机上(运行 Windows 8.1)使此功能正常工作的方法,所以我怀疑文档中存在错误。

答案2

以下注册表编辑实现正是所问的

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\Desktop]
"DockMoving"="0"
"SnapSizing"="0"

(您可以将其保存为 .reg 文件并运行它。需要重新启动或重新登录。)

实际上,这是要设置的两个设置,执行@gitbox 答案中的代码。

适用于Windows 7 - 10。

答案3

我以前也曾寻找过这个,但我认为 Windows 本身没有办法做到这一点。不过,还有第三方替代方案。首先,按照问题中的链接禁用 Aero 捕捉。然后,使用微软平板(一个特别的自动热键脚本设置)您可以在多显示器设置中恢复屏幕之间的移动窗口,使用左/右捕捉等(顶部、底部、中间和角落捕捉)。默认情况下,WindowsPad 使用Win+键(因为添加了功能),但您可以通过将以下内容添加到WindowsPad.ini 文件的部分NumPad来添加类似 aero-snap 的箭头键功能:[Hotkeys]

#+Left = WindowScreenMove,下一个
#+Right = WindowScreenMove, 上一个
#左 = WPM, -1, 0, 0.5, 1.0
#正确 = WPM, +1, 0, 0.5, 1.0
#Up = MaximizeToggle
#Down = 恢复

不幸的是,您确实失去了捕捉到屏幕 50% 然后再恢复到原始位置的能力(因为它实际上是在调整窗口大小,而不是使用 Aero 捕捉)。但到目前为止,这是我发现的唯一缺点。


WindowsPad 角落和底部捕捉功能的演示:

WindowsPad 演示

答案4

您可以在注册表中执行此操作。

  1. 打开 regedit.exe
  2. 导航HKEY_CURRENT_USER \Control Panel\Desktop
  3. WindowArrangementActive双击选择字段
  4. 将值设置为0
  5. 重新启动(注销并重新登录可能会有效)

从这里找到http://www.technorms.com/33660/how-to-disable-the-windows-snap-feature

相关内容