Хотя не может быть способа сделать это через графический интерфейс, есть способ сделать это программно.
Функция, которую вы хотите, это SystemParametersInfo. Вы можете прочитать об этом в 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), поэтому я подозреваю, что в документации есть ошибка.