★★看我这个APi怎么了???SystemParametersInfo(SPI_SETMOUSESPEED,0,@nMouseSpeed,SPIF_UPDATE

  • 主题发起人 主题发起人 ETimeFly
  • 开始时间 开始时间
E

ETimeFly

Unregistered / Unconfirmed
GUEST, unregistred user!
★★看我这个APi怎么了???SystemParametersInfo(SPI_SETMOUSESPEED,0,@nMouseSpeed,SPIF_UPDATEINIFILE); (20分)<br />var<br>&nbsp; nMouseSpeed:integer;<br>……<br>nMouseSpeed:=1;<br>&nbsp; &nbsp; &nbsp; lbR:=SystemParametersInfo(SPI_SETMOUSESPEED,0,@nMouseSpeed,SPIF_UPDATEINIFILE);<br><br>为什么没有效果?鼠标速度没有任何变化??98和xp中都不行!!!<br>lbR为False!<br>GetLastError有时为120,有时为0;
 
第三个参数无论如何设置都不行!!0也不行!
 
lbR:=SystemParametersInfo(SPI_SETMOUSESPEED,0,nMouseSpeed,SPIF_UPDATEINIFILE);
 
windbell<br><br>看一下delphi的帮助,和MSDN的说明,这里的第3个参数是个pointer!!<br>integer指针!!<br>
 
没有人用过这个函数吗?<br>没人会吗?
 
分太少了,<br>注意:如果要立即看到效果一定要加上 SPIF_SENDWININICHANGE 啦,<br>SPIF_UPDATEINIFILE 只是写入 Win.Ini或注册表之类的配置文件啦,<br><br>呵呵~~~~~~~~~~~~~~~~~~~
 
分少我以后一定会补上的。<br><br><br>但是我的问题还没有解决呀!!<br>加上 SPIF_SENDWININICHANGE 还是不行!!<br>代码如下:<br>begin<br>&nbsp; &nbsp; &nbsp; nMouseSpeed:=5;<br>&nbsp; &nbsp; &nbsp; lbR:=SystemParametersInfo(SPI_SETMOUSESPEED,0,@nMouseSpeed,SPIF_SENDWININICHANGE);<br>&nbsp; &nbsp; &nbsp; Error:=GetLastError();<br>&nbsp; &nbsp; &nbsp; assert(lbR);<br>&nbsp; &nbsp; &nbsp; ShowMessage(inttostr(Error));<br>end;<br>assert不能通过!!但GetLastError为0,很奇怪的!!!不信你们试试呀!!!!!!!
 
顶!!<br><br>如果谁解决了,再给分!!!!!!!!!
 
顶!!!!!!!!!!!!!!!!<br><br><br>分少我以后一定会补上的。<br><br><br>但是我的问题还没有解决呀!!<br>加上 SPIF_SENDWININICHANGE 还是不行!!<br>代码如下:<br>begin<br>&nbsp; &nbsp; &nbsp;nMouseSpeed:=5;<br>&nbsp; &nbsp; &nbsp;lbR:=SystemParametersInfo(SPI_SETMOUSESPEED,0,@nMouseSpeed,SPIF_SENDWININICHANGE);<br>&nbsp; &nbsp; &nbsp;Error:=GetLastError();<br>&nbsp; &nbsp; &nbsp;assert(lbR);<br>&nbsp; &nbsp; &nbsp;ShowMessage(inttostr(Error));<br>end;<br>assert不能通过!!但GetLastError为0,很奇怪的!!!不信你们试试呀!!!!!!! &nbsp;<br>
 
呵呵,我碰到了和你一样的问题:<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=2394309
 
嘿嘿,奇怪,这么解决了!!类似windbell的方法,他的第三个参数类型不对,下面的完全可以::<br>nMouseSpeed:=5;<br>&nbsp; &nbsp; &nbsp; lbR:=SystemParametersInfo(SPI_SETMOUSESPEED,0,Pointer(nMouseSpeed),SPIF_UPDATEINIFILE);<br>&nbsp; &nbsp; &nbsp; Error:=GetLastError();<br>但我很迷惑::<br><br>MSDN里面明明是这么写的:<br>*****************<br>SPI_SETMOUSESPEED <br><br>Windows NT 5.0 and later, Windows 98: Sets the current mouse speed. The pvParam parameter must point to an integer between 1 (slowest) and 20 (fastest). A value of 10 is the default. This value is typically set using the mouse control panel application. <br>**************<br><br>“The pvParam parameter must point to an integer between 1 (slowest) and 20 (fastest). ”<br><br>“pvParam必须指向一个1~20的整数”是这样翻译的吗??而这个方法明明是将 一个整数nMoseSpeed(5值为)强制转换为指针的嘛!!!这个指针指向地址为5的内存空间,而不是指向一个整数5!!!<br><br>怎么解释????<br>
 
该函数查询或设置系统级参数。该函数也可以在设置参数中更新用户配置文件。
 
用于Windows NT 5.0及以后版本、Windows 98。检索当前鼠标速度。鼠标速度决定了鼠标移动多少距离,鼠标的指针将移动多远。参数pvParam指向一个整型变量,该变量接收1(最慢)至20(最快)之间的数值。缺省值为们10。这个值可以由最终用户使用鼠标控制面板应用程序或使用调用了SPI_SETMOUSESPEED的应用程序来设置
 
The pvParam parameter must point to an integer between 1 (slowest) and 20 (fastest). <br><br>"point to an integer"<br><br>是什么意思???!!
 
integer类型的指针。
 
对呀,既然是“integer 类型的指针”,那么下面的怎么不行???!!!<br>nMouseSpeed:=5;<br>&nbsp; &nbsp; &nbsp;lbR:=SystemParametersInfo(SPI_SETMOUSESPEED,0,@nMouseSpeed,SPIF_SENDWININICHANGE);<br>
 
后退
顶部