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