用systemparametersinfo的话, SPI_SETSPEED其实是设置加速的,
SPI_SETMOUSESEED在光盘版本的MSDN上说,98和NT都支持,但微软的在线MSDN
站点上查出的资料却说NT不支持!!! 而在2000下实际使用,也是毫无效果。
更改注册表,好像有点用,但一定要重启动,作不到象控制面板中鼠标设定
那样的即时生效。这个问题竟然这么难?
SPI_SETMOUSESEED在光盘版本的MSDN上说,98和NT都支持,但微软的在线MSDN
站点上查出的资料却说NT不支持!!! 而在2000下实际使用,也是毫无效果。
更改注册表,好像有点用,但一定要重启动,作不到象控制面板中鼠标设定
那样的即时生效。这个问题竟然这么难?
OK?
不行呀。关键问题是,windows好象根本就没有提供调整鼠标速度(英文应该是:mouse sensitivity)
的api给我们。
sendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
行不行?
实在不行,你可以写个监视程序,看在控制面板中鼠标设定后系统会向应用程序发出什么消息,嗬嗬。
没有api来设定这个mouse sensitivity的值(或许我还不知道?希望如此)。因为在线的
MSDN上明确说明2000下的 SystemParametersInfo 不支持 SPI_SETMOUSESPEED 这个参数。哪位研究过的大侠,不吝赐教呀。 分数不成问题,我有7000多分。
var
RtnOk : boolean;
aryMouse : array[0..2] of integer;
pMouse : Pointer;
begin
aryMouse[0] := 0;
aryMouse[1] := 1;
aryMouse[2] := 2;
pMouse := @aryMouse;
RtnOk := SystemParametersInfo(SPI_SETMOUSE,20,pMouse,
SPIF_UPDATEINIFILE+SPIF_SENDCHANGE);
if RtnOk then
ShowMessage('successful!')
else
ShowMessage(Format('%d',[GetLastError]));
end;
的 pvParam 参数。感觉用法较怪异。每项的含义如下:
{ 阀值1, 范围不祥。当 Acceleration > 0 (即1或2)时,如果鼠标在 x 或 y 方向上的移动点数超过该值,则windows将鼠标实际移动的点数乘以 2
阀值2, 范围不祥。当 Acceleration = 2 时,如果鼠标在 x 或 y 方向上的移动点数超过该值,则windows将 threshold1 乘出来的移动点数结果再乘以 2, 这样与原始移动点数是乘 4 的关系
加速度,0-2。 控制上述两个阀值的使用时机 win2000 的加速选项,无、低、中、高对应的值分别为(0,0,0)、(7,0,1)、(4,12,2)、(4,6,2) 其传入的参数的结构应该如下:
TMouseAccel = record
Threshold1: integer; // 阀值1, 范围不祥。
Threshold2: integer; // 阀值2, 范围不祥。
Acceleration: integer; // 加速度,0-2。
end;所以说,SPI_SETMOUSE这个参数,不是我所需要的参数。这个参数,简单的说,就是当你快速
移动鼠标是才会有效果,如果你老老实实的慢慢移动鼠标,那这个参数不会有任何影响。这才
有了这个问题,如何调整mouse sensitivity.
速度已经改变了(可以通过移动鼠标感觉出来),但并没有任何消息发送出来。
先顶一下!