批处理之家's Archiver

BAT1 发表于 2015-4-18 14:49

【己解决】VBS能否一键切换 提高鼠标指针精确度 选项

[i=s] 本帖最后由 BAT1 于 2015-4-20 15:10 编辑 [/i]

在打CS或者CF的时候,需要把 “提高鼠标指针精确度” 选项关闭,玩其他游戏时又要再次开启。
开启的操作步骤为:
1开始菜单——2设置——3控制面版——4鼠标——5指针选项——6提高指针精确度——7确定
这操作步骤太过于烦索了。

我想在桌面放一个快捷方式,
双击就关闭 “提高指针精确度”,并弹出一个“提高指针精确度”是处于什么状态的提示框。
再双击就反过来......

或者放两个快捷方式,
双击一个就开启指针精确度,双击另一个就关闭指针精确度。

不知能否实现?

yu2n 发表于 2015-4-18 20:35

[i=s] 本帖最后由 yu2n 于 2015-4-18 20:47 编辑 [/i]

'VBS 设置鼠标指针精确度(5秒内) By yu2n
'Win7 x64 测试通过[code]'VBS 设置鼠标指针精确度(5秒内) By yu2n
'Win7 x64 测试通过
Const sTitle = "鼠标 属性"  ' 查找窗口名称
Const nTimeOut = 5          ' 指定超时时间

Dim wso
Set wso = CreateObject("WScript.Shell")

' 打开鼠标控制面板
wso.Run "control.exe main.cpl"

Dim dtStart, bFind
dtStart = Now()
Do While DateDiff("s", dtStart, Now()) < nTimeOut
  WScript.Sleep 200
  If CreateObject("WScript.Shell").Appactivate(sTitle) Then
    bFind = True  ' 做标记-已找到
    Exit Do
  End If
Loop

If bFind Then
  ' 发送按键
  wso.SendKeys "(^{TAB})"
  WScript.Sleep 200
  wso.SendKeys "(^{TAB})"
  WScript.Sleep 200
  wso.SendKeys "(%E)"
  WScript.Sleep 200
  wso.SendKeys "(%A)"
  WScript.Sleep 1500
  wso.SendKeys "{ESC}"
  WScript.Sleep 200
  wso.Popup  "完成!耗时 " & DateDiff("s", dtStart, Now()) _
    & " 秒。" & String(3,vbTab), 3, WScript.ScriptName, vbSystemModal+vbInformation
Else
  wso.Popup "无法打开[" & sTitle & "]选项卡!耗时 " & DateDiff("s", dtStart, Now()) _
    & " 秒。" & String(3,vbTab), 3, WScript.ScriptName, vbSystemModal+vbCritical
End If[/code]

BAT1 发表于 2015-4-19 13:21

[i=s] 本帖最后由 BAT1 于 2015-4-19 13:35 编辑 [/i]

[b]回复二楼[/b]
首先我非常感谢你的热心帮助,
其次,我使用XP操作系统,
经过50次测试,这个脚本在选项卡的选择上还存在一点小问题,希望你能再修改一下。
有时候停留在“鼠标键”,
选中“双击速度”,然后“确定”

有时候停留在“指针”,
选中“方案”,然后“确定”

有时候停留在“指针选项”。
选中“提高指针精确度”,然后“确定”(这个才是对的)

:L我该如何评价你的脚本呢?

yu2n 发表于 2015-4-19 13:46

[i=s] 本帖最后由 yu2n 于 2015-4-19 14:33 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=166961&ptid=35241]3#[/url] [i]BAT1[/i] [/b]

XP的鼠标指针设置界面与Win7并无差别。

猜测是你的电脑反应速度的问题,亦或是杀毒软件的拦截。

可以自行修改 WScript.Sleep 后面的时间,电脑慢的话,时间要设置长一些。反之,可以设短些。

如果不介意注销、重启系统,可以考虑以下脚本。[code]'一般精确度.vbs
RegPath = "HKEY_CURRENT_USER\Control Panel\Mouse\"
Set RR = CreateObject("WScript.Shell")
RR.RegWrite RegPath & "MouseSpeed", "0"
RR.RegWrite RegPath & "MouseThreshold1", "0"
RR.RegWrite RegPath & "MouseThreshold2", "0"[/code][code]'提高精确度.vbs
RegPath = "HKEY_CURRENT_USER\Control Panel\Mouse\"
Set RR = CreateObject("WScript.Shell")
RR.RegWrite RegPath & "MouseSpeed", "1"
RR.RegWrite RegPath & "MouseThreshold1", "6"
RR.RegWrite RegPath & "MouseThreshold2", "10"[/code]

BAT1 发表于 2015-4-20 13:06

[i=s] 本帖最后由 BAT1 于 2015-4-20 13:25 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=166964&ptid=35241]4#[/url] [i]yu2n[/i] [/b]


    注销?重启? 我介意啊:L

在修改注册表的时候,可以先结束explorer进程,再重新加载explorer,作用是代替注销。
只是不知道 能否用在鼠标上。
你能不能在修改注册表的脚本后面,补上一段 重新加载explorer的代码?

最后按照这个顺序运行
1、一般精确度
2、CF主程序
3、提高精确度

yu2n 发表于 2015-4-20 14:37

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=167045&ptid=35241]5#[/url] [i]BAT1[/i] [/b]

重新加载explorer,对于鼠标精确度无效。

BAT1 发表于 2015-4-20 15:09

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=167052&ptid=35241]6#[/url] [i]yu2n[/i] [/b]


    好的,那我还是用最开始那个代码吧,把等待时间加长一些。

9zhmke 发表于 2015-4-21 15:23

在代码里插入对CPU占用和硬盘占用的检测,如果占用量过高则等候一会儿再操作就没问题了。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.