永发信息网

你好,补充请教一下之前关于 光标 根据Autohotkey运行状态 去变化样式的脚本

答案:1  悬赏:30  手机版
解决时间 2021-01-25 16:45
  • 提问者网友:谁的错
  • 2021-01-24 16:39
最高只能选100分了。
系统平台是win7-64,AHK Version v1.0.92.00
我常用的软件是Siemens PLM NX,属于3D图形设计类型。
按照你的蓝本,我添加了自己适用的后面部分,我习惯用右边Alt来控制Autohotkey的suspend与否,
使用中发现,用鼠标右键点击右下角的Autohotkey图标,选suspend,或者退出脚本,
光标就按照预想去变化;

问题1:但用右边Alt作为快捷键控制Autohotkey的suspend,光标就不跟随变化了,如何优化?

问题2:当光标处于可以输入文本的范围(例如文本文档),始终是 I 型,无法根据光标样式快速判断Autohotkey的运行状态,如何优化?

问题3:之前设想的 光标变成箭头+绿色圈,发现绿色圈是运动的,有点干扰思考,
如果想换成其他的样式(例如 特大号的箭头 或 特大号 手写 笔形),要怎么自行修改?

谢谢......

脚本如下:
#Persistent
SetSystemCursor()
OnMessage(0x111, "WM_COMMAND")
OnExit, Label_Exit
return
; EXAMPLE #1
F1::
F2::
MsgBox, %A_ThisHotKey% was pressed.
return
; END OF EXAMPLE #1
Label_Exit:
RestoreCursors()
ExitApp

WM_COMMAND(wParam, lParam)
{
ifEqual, wParam, 65305
{
Suspend, Toggle
if(A_IsSuspended)
RestoreCursors()
Else
SetSystemCursor()
return, 0
}
}
SetSystemCursor()
{
IDC_ARROW := 32512
hCursor := DllCall( "LoadCursorFromFile", "Str", "C:\Windows\Cursors\aero_working.ani")
DllCall("SetSystemCursor", "UInt", hCursor, "Int", IDC_ARROW)
}
RestoreCursors()
{
SPI_SETCURSORS := 0x57
DllCall("SystemParametersInfo", "UInt", SPI_SETCURSORS, "UInt", 0, "UInt", 0, "UInt", 0)
}

space::MButton
RAlt::Suspend

*w up::send {shift up}{ctrl up}{LButton up}
*w::
GetKeyState, LButtonState, LButton ;
if LButtonState = U ;
send {shift down}{ctrl down}{LButton down} ;
return
字数限制,概括节选了脚本。
最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-01-24 17:31
问题1:
RAlt::WM_COMMAND(65305, 0)问题2:
SetSystemCursor仅替换了IDC_ARROW,所以只有标准的箭头被替换.根据需要添加就可以了
SetSystemCursor()
{
    ;替换标准的箭头
    IDC_ARROW:=32512
    hCursor  := DllCall( "LoadCursorFromFile", "Str", "C:\Windows\Cursors\aero_working.ani")
    DllCall("SetSystemCursor", "UInt", hCursor, "Int", IDC_ARROW)
    ;替换"I"型光标
    IDC_IBEAM:=32513
    hCursor  := DllCall( "LoadCursorFromFile", "Str", "C:\Windows\Cursors\aero_working.ani")
    DllCall("SetSystemCursor", "UInt", hCursor, "Int", IDC_IBEAM)
}附:Win32预定义光标
IDC_ARROW := 32512
IDC_IBEAM := 32513
IDC_WAIT := 32514
IDC_CROSS := 32515
IDC_UPARROW := 32516
IDC_SIZE := 32640
IDC_ICON := 32641
IDC_SIZENWSE := 32642
IDC_SIZENESW := 32643
IDC_SIZEWE := 32644
IDC_SIZENS := 32645
IDC_SIZEALL := 32646
IDC_NO := 32648
IDC_HAND := 32649
IDC_APPSTARTING := 32650
IDC_HELP := 32651问题3:

因为SetSystemCursor中用于替换的hCursor是加载的"C:\Windows\Cursors\aero_working.ani",要替换为别的鼠标样式请自行修改文件路径
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯