用systemparametersinfo的话, SPI_SETSPEED其实是设置加速的,
SPI_SETMOUSESEED在光盘版本的MSDN上说,98和NT都支持,但微软的在线MSDN
站点上查出的资料却说NT不支持!!! 而在2000下实际使用,也是毫无效果。
更改注册表,好像有点用,但一定要重启动,作不到象控制面板中鼠标设定
那样的即时生效。这个问题竟然这么难?

解决方案 »

  1.   

    systemparametersinfo(  SPI_SETSPEED, 0, xxx,  SPIF_updateinifile or spif_sendwininichange );
    OK?
      

  2.   

    不好意思,问题内容错了一点,SPI_SETSPEED这个参数是不存在的,应为SPI_SETMOUSE。楼上的兄弟的主要意思,我猜是提醒我更改了设置以后,发送广播消息。但我已经试过了,
    不行呀。关键问题是,windows好象根本就没有提供调整鼠标速度(英文应该是:mouse sensitivity)
    的api给我们。
      

  3.   

    这样呢?
    sendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0); 
    行不行?
    实在不行,你可以写个监视程序,看在控制面板中鼠标设定后系统会向应用程序发出什么消息,嗬嗬。
      

  4.   

    谢谢flyinwuhan的回复。 但现在的问题不在于是否需要发送广播消息,而在于2000下根本
    没有api来设定这个mouse sensitivity的值(或许我还不知道?希望如此)。因为在线的
    MSDN上明确说明2000下的 SystemParametersInfo 不支持 SPI_SETMOUSESPEED 这个参数。哪位研究过的大侠,不吝赐教呀。 分数不成问题,我有7000多分。
      

  5.   

    我也去微软的老巢查了,没找到 SPI_SETMOUSESPEED 这个东东,但是我在D6中也查过了,确实存在 SPI_SETMOUSESPEED 这个东东,当时就犯晕糊了,不知道怎么回事,后来看到SPI_SETMOUSE这个值,就试了一下,结果是执行成功,也不知道对不对,抛一下砖先:Dprocedure TForm1.Button1Click(Sender: TObject);
    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;
      

  6.   

    flyinwuhan的办法有效的,我以前改变打印机设置也是采取类似的方法
      

  7.   

    对SPI_SETMOUSE这个参数,我仔细看了一下msdn, 解释如下:鼠标加速性能结构。用于 SystemParameterInfo 的  SPI_GETMOUSE 何 SPI_SETMOUSE
    的 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.
      

  8.   

    flyinwuhan: 我用spy++ 查了一下,当你在控制面板中调整鼠标的速度,尽管鼠标
    速度已经改变了(可以通过移动鼠标感觉出来),但并没有任何消息发送出来。
      

  9.   

    是否有专门的API不太清楚,等高手来了!
    先顶一下!