我在Windows 7上设置了三个监视器,有时我无法跟踪光标所在的位置。是否有Windows快捷方式可以重置鼠标位置?我猜没有,但是有没有办法设置一个可以绑定到组合键的简单宏,以将光标设置到默认位置,例如主显示器的中心?
我在Windows 7上设置了三个监视器,有时我无法跟踪光标所在的位置。是否有Windows快捷方式可以重置鼠标位置?我猜没有,但是有没有办法设置一个可以绑定到组合键的简单宏,以将光标设置到默认位置,例如主显示器的中心?
Answers:
结合以上几点想法,我想到了这个脚本。经过测试,可以正常工作。
CentreCursor.ps1
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") | out-null
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | out-null
$bounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
$center = $bounds.Location
$center.X += $bounds.Width / 2
$center.Y += $bounds.Height / 2
[System.Windows.Forms.Cursor]::Position = $center
将此脚本保存在一个方便的文件夹中,并在“所有程序”菜单中创建一个快捷方式:
目标:%systemroot%\ system32 \ windowspowershell \ v1.0 \ powershell.exe -ExecutionPolicy RemoteSigned-文件“ C:\ Path to Script \ CentreCursor.ps1”
快捷键: Ctrl + Alt + Shift + C
运行:最小化
现在,每当您按Ctrl+ Alt+ Shift+时C,您的光标将返回原位。
编辑: 虽然这似乎不是我计算机上的要求,但我已将Patrick的建议添加到了快捷方式中。
打开“当我按下CTRL键时显示指针的位置”是一种选择。如果当前很难通过应用程序(例如画笔)将其更改为某些自定义鼠标指针,则此功能特别有用。
您可以使用名为UltraMon的软件程序轻松地完成此操作。
在选项部分中,有一个地方可以指定热键。您可以在我为Crtl + Shift + C设置热键的屏幕截图中看到
下面的AutoHotkey命令序列将立即将鼠标移至主要显示的中心:
CoordMode, Mouse, Screen
MouseMove, A_ScreenWidth/2, A_ScreenHeight/2, 0
例如,编译以下脚本:
CoordMode, Mouse, Screen
MouseMove, A_ScreenWidth/2, A_ScreenHeight/2, 0
ExitApp
然后,您可以.lnk
使用所选的快捷键为其创建快捷方式()。:)
这是一个执行此操作的AutoIt脚本。AutoIt可以将其脚本编译为.exe,然后可以为其分配热键。
Dim Const $SPI_GETWORKAREA = 0x0030
$rect = DllStructCreate("long left;long top;long right;long bottom")
DllCall("user32.dll", "BOOL", "SystemParametersInfo", "UINT", $SPI_GETWORKAREA, "UINT", 0, "ptr", DllStructGetPtr($rect), "UINT", 0)
Dim $left = DllStructGetData($rect, 1)
Dim $top = DllStructGetData($rect, 2)
Dim $right = DllStructGetData($rect, 3)
Dim $bottom = DllStructGetData($rect, 4)
MouseMove($left + (($right - $left) / 2), $top + (($bottom - $top) / 2))
使用WMIC和Powershell(应该已经在Windows 7下安装了两者)应该可以实现。
使用WMIC,可以获得屏幕的宽度和高度:
C:\>wmic desktopmonitor get screenheight, screenwidth
ScreenHeight ScreenWidth
900 1440
Powershell可以设置鼠标位置(替换<X>
并<Y>
使用实际坐标):
PS C:\>[system.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | out-null
PS C:\>[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(<X>,<Y>)
因此,应该通过一些反复试验(和基本数学运算)为您提供一个脚本,该脚本在运行时将鼠标指针居中。
另一个AutoIt3程序:
<!-- --!>
;;; Define variables according to you
$speed = 1 ; 0=instantly, 1=fastest, 100=slowest
$delay = 100 ; milliseconds
$hotkey = "^+!c" ; ^=Ctrl, +=Shift, !=Alt
;;; Hotkey function
Func GetMyMouse()
MouseMove(@DesktopWidth / 2, @DesktopHeight / 2, $speed)
EndFunc
;;; Register hotkey
HotKeySet($hotkey, "GetMyMouse")
;;; Program body (busy wait)
While True
Sleep($delay)
WEnd