Я сделал программу для изменения чувствительности мыши так же, как вы можете сделать это с помощью панели управления. Изменения внесены в реестр, ключи в HKEY_CURRENT_USER\Control Panel\Mouse
, и они действительно выполнены (я проверил их из regedit.exe), но мышь работает так, как будто эти изменения не были сделаны. Другими словами, изменения не имеют никакого эффекта, они действуют только при использовании панели управления. Почему они не вступают в силу?Я редактирую настройки мыши в реестре, но они ничего не делают
ответ
Реестр Windows - это не то, что постоянно обновляется. Изменения, которые вы внесли, будут применены после того, как текущий пользователь (вот почему он HKEY_CURRENT_USER) снова войдет в систему или, как вы сказали, после использования панели управления, которая будет читать реестр. Я не знаю, на каком языке написана ваша программа, но вы должны проверить эту ссылку: «https://msdn.microsoft.com/en-us/library/ms724947.aspx»
В целом, настройка настроек реестра напрямую не поддерживается, особенно когда есть API для настройки. В этом случае API равен SystemParametersInfo. В частности, вам необходимо использовать SPI_SETMOUSESPEED
в качестве аргумента для параметра uiAction
.
Другими словами, изменения не имеют никакого эффекта, они действуют только при использовании панели управления. Почему они не вступают в силу?
Потому что для этого есть немного больше, чем установка значения в реестре. Часто появляется уведомление, которое должно быть отправлено после изменения значения, чтобы сообщить обо всем остальном программном обеспечении на компьютере опустить любые кешированные значения и заменить их новым значением, которое теперь находится в реестре. Во многих случаях уведомление будет в форме широковещательного сообщения.
В случае настроек драйвера мыши вам, вероятно, необходимо использовать аргумент SPIF_UPDATEINIFILE
для параметра fWinIni
. Вам также может потребоваться ИЛИ с SPIF_SENDCHANGE
для трансляции сообщения WM_SETTINGCHANGE
, но я не уверен в этом.
Я понимаю. Спасибо за ссылку, похоже, это то, что я искал. Было бы здорово, если бы был способ перезагрузить реестр, но это выполнит эту работу. – alvaromat