0

コントロール パネルと同じように、マウスの感度を変更するプログラムを作成しました。変更はレジストリで行われ、キーHKEY_CURRENT_USER\Control Panel\Mouseは実際に行われます (regedit.exe から確認しました) が、マウスはこの変更が行われていないかのように動作します。つまり、変更は効果がなく、コントロール パネルを使用した場合にのみ効果があります。なぜ有効にならないのですか?

4

2 に答える 2

1

一般に、特に設定を調整する API がある場合は、レジストリ設定を直接調整することはサポートされていません。この場合、API はSystemParametersInfoです。SPI_SETMOUSESPEED特に、パラメータの引数としてを使用する必要がありuiActionます。

つまり、変更は効果がなく、コントロール パネルを使用した場合にのみ効果があります。なぜ有効にならないのですか?

多くの場合、レジストリに値を設定するだけでは不十分なためです。多くの場合、マシン上の他のすべてのソフトウェアにキャッシュされた値を削除し、現在レジストリにある新しい値に置き換えるように指示するために、値を変更した後に送信する必要がある通知があります。多くの場合、通知はブロードキャスト メッセージの形式になります。

マウス ドライバの設定の場合、おそらくパラメータにSPIF_UPDATEINIFILE引数を使用する必要がありfWinIniます。SPIF_SENDCHANGEメッセージをブロードキャストするには、OR を使用する必要があるかもしれませんがWM_SETTINGCHANGE、それについてはわかりません。

于 2015-07-09T16:52:32.600 に答える