不知道从什么时候开始,鼠标指针的动画不动了,经过我再三确认,反复删除动画指针再添加,仍然是不动。
只有在变更之后点击应用的一瞬间是看到圈圈在转动的,其他时候不会动,就一个静态的图案。
尝试在谷歌上面找答案,唯一相关性较高的一个帖子是说要更新触控板的驱动,可是我的台式机也没有触控板啊,想装驱动的门都没。
https://www.sevenforums.com/customization/49705-animated-cursor-problem.html
大家有遇到过相同的问题吗?
不知道从什么时候开始,鼠标指针的动画不动了,经过我再三确认,反复删除动画指针再添加,仍然是不动。
只有在变更之后点击应用的一瞬间是看到圈圈在转动的,其他时候不会动,就一个静态的图案。
尝试在谷歌上面找答案,唯一相关性较高的一个帖子是说要更新触控板的驱动,可是我的台式机也没有触控板啊,想装驱动的门都没。
https://www.sevenforums.com/customization/49705-animated-cursor-problem.html
大家有遇到过相同的问题吗?
你这什么系统版本啊,是原版还是精简的
你贴那个链接是2009年的啊 ![]()
我怀疑是因为近期为了某个软件更新了系统补丁后导致的情况,但是我没有证据。
| 版本 | Windows 10 专业版 |
|---|---|
| 版本号 | 22H2 |
| 安装日期 | 2022-04-08 |
| OS 内部版本 | 19045.6456 |
是不是视觉效果里面的最佳外观/最佳性能的影响?
试过了,及时使用最佳外观模式也不行,系统也没有精简过。
你只能找软件的锅啊,微软已经不更新10了![]()
能否分享一下这个光标的包?
会不会是自动隐藏鼠标指针的锅?
先生乃神人也,还真是Hide Mouse Cursor on Idle.ahk的问题。
丢给DEEPSEEK 看了一下,出了一版,暂时还没解决方法,望大佬们帮忙看看。我尝试给作者发个邮件看看会不会有回应,GITHUB上的时间都是很久远了。
; AutoHotkey Version: 1.x
; Language: English
; Platform: Win9x/NT
; Author: Stefan Z Camilleri - [email protected]
#NoTrayIcon
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
; Initialize the mouse cursor
SystemCursor("Init")
; Get the current mouse position, and store its coordinates
MouseGetPos mX0, mY0
; Set a timer to check if the mouse is still idle every 250ms
SetTimer, CheckIdle, 250
; Register the keys you want to listen on
keys = ``1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
; For every defined key, register a call to hide the mouse cursor
Loop Parse, keys
HotKey ~*%A_LoopField%, Hoty
return
; Checks if the mouse has moved, and if so, shows it and records the new position
CheckIdle:
MouseGetPos mX, mY
if (mX0 != mX && mY0 != mY)
{
SystemCursor("On")
mX0 := mX, mY0 := mY
}
return
; Hides the mouse cursor
Hoty:
SystemCursor("Off")
return
; Ensure the cursor is made visible when the script exits.
#Persistent
OnExit, ShowCursor
return
; Shows the mouse cursor
ShowCursor:
SystemCursor("On")
ExitApp
; Function to hide or show the mouse cursor
SystemCursor(OnOff=1) ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others
{
static AndMask, XorMask, $, h_cursor
,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; blank cursors
, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; handles of default cursors
if (OnOff = "Init" or OnOff = "I" or $ = "") ; init when requested or at first call
{
$ = h ; active default cursors
VarSetCapacity( h_cursor,4444, 1 )
VarSetCapacity( AndMask, 32*4, 0xFF )
VarSetCapacity( XorMask, 32*4, 0 )
system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
StringSplit c, system_cursors, `,
Loop %c0%
{
h_cursor := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% )
h%A_Index% := DllCall( "CopyImage", "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 )
b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0
, "int",32, "int",32, "uint",&AndMask, "uint",&XorMask )
}
}
if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
$ = b ; use blank cursors
else
$ = h ; use the saved cursors
Loop %c0%
{
h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 )
DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% )
}
}
ani文件就是多帧cur文件合并加上类似gif的播放信息,所以鼠标指针的图像就是一帧一帧播放的,隐藏鼠标指针的脚本复制出来的是动画指针的第一帧,所以恢复出来的也只有第一帧
可以参考微软的 LoadAnimatedCursor 指令
——
我觉得是,找出里面哪些id是等待状态的指针,剔掉,只隐藏非动画指针就好,简单直接
很多软件本来就自带闲置隐藏鼠标,不带基本就是没这必要,所以为啥要用这个AHK?
是的,思路就是按您的思路,只替换正常指针,我用DS修改了几次,以下这一版运行效果良好。就是每次都创造新的句柄,然后再销毁,感觉不太合适,但是能用就行,代码这东西讲究缘分。
;#NoTrayIcon
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
; 需要隐藏的光标类型
cursorsToHide := [32512, 32513] ; 箭头和文本选择光标
; 如果需要隐藏更多,可以添加:
; 32514 - 等待光标(沙漏/圆圈)
; 32515 - 十字光标
; 32516 - 手型光标
; 存储原始光标
originalCursors := {}
cursorHidden := false
; 初始化:保存需要隐藏的光标
SaveOriginalCursors()
; 获取并存储初始鼠标位置
MouseGetPos, mX0, mY0
; 设置定时器检查鼠标是否空闲
SetTimer, CheckIdle, 250
; 定义要监听的按键
keys := "``1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./"
; 为每个按键注册热键
Loop, Parse, keys
{
Hotkey, ~*%A_LoopField%, HideCursors
}
return
CheckIdle:
MouseGetPos, mX, mY
if (mX != mX0 or mY != mY0)
{
if (cursorHidden)
{
RestoreOriginalCursors()
cursorHidden := false
}
mX0 := mX
mY0 := mY
}
return
HideCursors:
if (!cursorHidden)
{
SetBlankCursors()
cursorHidden := true
}
return
OnExit("RestoreOnExit")
RestoreOnExit()
{
RestoreOriginalCursors()
ExitApp
}
; 保存原始光标
SaveOriginalCursors()
{
global originalCursors, cursorsToHide
for index, cursorID in cursorsToHide
{
; 获取当前系统光标
hCursor := DllCall("LoadCursor", "Ptr", 0, "UInt", cursorID, "Ptr")
; 创建副本并保存
hCursorCopy := DllCall("CopyImage", "Ptr", hCursor, "UInt", 2, "Int", 0, "Int", 0, "UInt", 0, "Ptr")
originalCursors[cursorID] := hCursorCopy
}
}
; 创建空白光标
CreateBlankCursor()
{
VarSetCapacity(AndMask, 32*4, 0xFF)
VarSetCapacity(XorMask, 32*4, 0)
hCursor := DllCall("CreateCursor", "Ptr", 0, "Int", 0, "Int", 0, "Int", 32, "Int", 32, "Ptr", &AndMask, "Ptr", &XorMask, "Ptr")
hCursorCopy := DllCall("CopyImage", "Ptr", hCursor, "UInt", 2, "Int", 0, "Int", 0, "UInt", 0, "Ptr")
DllCall("DestroyCursor", "Ptr", hCursor)
return hCursorCopy
}
; 设置空白光标
SetBlankCursors()
{
global cursorsToHide
for index, cursorID in cursorsToHide
{
; 为每种光标创建新的空白光标
blankCursor := CreateBlankCursor()
; 替换系统光标
DllCall("SetSystemCursor", "Ptr", blankCursor, "UInt", cursorID)
}
}
; 恢复原始光标
RestoreOriginalCursors()
{
global originalCursors
for cursorID, hOriginal in originalCursors
{
if (hOriginal != 0)
{
; 创建原始光标的副本
hCursorCopy := DllCall("CopyImage", "Ptr", hOriginal, "UInt", 2, "Int", 0, "Int", 0, "UInt", 0, "Ptr")
; 恢复系统光标
DllCall("SetSystemCursor", "Ptr", hCursorCopy, "UInt", cursorID)
}
}
}
补充一下,以上脚本,只隐藏了ID 32512 32513这2个指针,也就是设置里面的“正常选择”和“文本选择指针”指针,可根据需要自行添加。
用这个Autohotkey脚本的主要目的是,在使用输入法打字的时候,指针经常遮挡我的候选词。而WIN10的“打字时隐藏鼠标指针”功能根本不起作用。所以用脚本来去弥补。
您说提到的软件自带隐藏,大概是指操作该软件的时候会隐藏鼠标,而不是打字的时候隐藏。功能不一样。
呃……我在用的鼠标指针连 I-beam 都是动画……
——
“很多软件”?除了视频播放工具外我没见过啥生产力软件是这样,能说说有哪些常见软件不?
“不带基本就是没这必要”?也不能这么说,Windows自己就带,可实现起来十分拉垮(为了兼容使用自定义指针的需求采取了一种极之被动的方式实现,而不是从系统底层给鼠标指针图层增加 visible 属性,很是让人疑惑),所以才有必要自己动手
——
已经通过AI的帮助,更新了重构版: 真正的“打字时隐藏鼠标指针”
更新:重构版【打字隐藏鼠标指针.ahk】,(以原版脚本为基础?)结合微软资料(winuser.h相关)和AI(Hunyuan & Gemini)重新编写的脚本,使用句柄取代简单图像提取,实现鼠标指针隐藏和恢复提示、可恢复原动画指针、可通过托盘菜单禁用。