Re: [AHK-] 请帮看程式:按一下就自动压住左键

楼主: mkz6 ( )   2017-07-28 00:39:34
※ 引述《timofEE (新人)》之铭言:
: 小弟第一次发文 请各位多多指教
: 我想做出:按下F4键后,就自动压着鼠标左键,直到侦测到再次压下F4键(return)
: 原先做出的程式为
: {F4}::
: send,{Click down}
: sleep 50
: if GetKeyState("f4")
: send{click up}
: {F4}指令来源:https://www.autohotkey.com/docs/commands/Send.htm
特殊键作为热键使用时不能用大括号
热键 http://ahkcn.sourceforge.net/docs/Hotkeys.htm
按键列表 http://ahkcn.sourceforge.net/docs/KeyList.htm
: Click down指令来源https://www.autohotkey.com/docs/commands/Click.htm
: 修改范例为http://catchtest.pixnet.net/blog/post/24561139
: sleep 50 是为了防止电脑连续读到F4 造成程式直接结束的状况
防误触用 KeyWait 比较适合
http://ahkcn.sourceforge.net/docs/commands/KeyWait.htm
然后 GetKeyState 要移到前面去判定左键而不是 F4
: 首先出现的是 电脑无法辨识{F4} 就算改成{alt}也仍然是无法辨识
: 第二是{click up}无法辨识 改成{lbutton up}也一样
: http://imgur.com/h8YslZK
: http://imgur.com/TV8RrqT
: (lbutton up down在https://goo.gl/w5cNGi中证实可用)
: http://imgur.com/6Jc4cHX
因为你的 send{click up} 连在一起了
^^^^ 指令后第一个逗号可省略,但要用空格分开
: 爬了文却发现大多数是想要 按住某按钮时快速连打
: 并没有这种自动压着的范例(或许是因为太简单)
: 总之 烦请大大帮小弟解惑
: 另外还有{F4}:: $F4:: #F4:: 这三种开头的差别
热键的修饰符:
http://ahkcn.sourceforge.net/docs/Hotkeys.htm#Symbols
: 与if not GetKeyState("F1", "P") 中 "P"的用途 (https://disp.cc/b/33-L7)
http://ahkcn.sourceforge.net/docs/commands/GetKeyState.htm
P: 获取物理状态 (即使用者是否实际按住了按键)
====================
参考 GetKeyState 底下的范例改写:
F4::
KeyWait F4 ; 等待 F4 放开 防误触
GetKeyState, state, LButton ; 获取左键状态
if state = D ; 如果状态=按下
Click Up ; 松开左键
else ; 否则
Click Down ; 按住左键
return
====================
GetKeyState 改用函数的写法:
F4::
KeyWait F4 ; 等待 F4 放开 (防误触)
if GetKeyState("LButton") ; 如果左键是按下状态
Click Up ; 松开左键
else ; 否则
Click Down ; 按住左键
return
====================
也可把按键判断写进 send 简化成一行:
F4 Up::Send % "{Click " . ( GetKeyState("LButton") ? "Up}" : "Down}" )
====================
如果不用太精确的判定,
直接用 F4::Click Down 让鼠标按住,
需要放开时,点一下鼠标左键就行了。
作者: timofEE (新人)   2017-07-28 16:47:00
感谢解惑了许多问题 很有帮助 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com