长按(执行标签或函数, 长按时间_毫秒 = 300)

许多实用脚本和封装函数, 可以让您编写脚本更加便捷高效

Moderators: tmplinshi, arcticir

Post Reply
tmplinshi
Posts: 1604
Joined: 01 Oct 2013, 14:57

长按(执行标签或函数, 长按时间_毫秒 = 300)

Post by tmplinshi » 19 Mar 2015, 21:35

Code: Select all

; 函数: 长按
; 	长按,则执行标签或函数
/*
	AHK 版本: 1.1.20.00+
	已知缺陷:
		* 影响短按的出字速度
		* 不能用于组合键
	示例:
		$q::长按("HelloWord") ; $前缀是必须的!

		HelloWord() {
			MsgBox, Hi
		}
*/
长按(执行标签或函数, 长按时间_毫秒 = 300) {
	k := LTrim(A_ThisHotkey, "$")

	Loop
		Sleep, 10
	Until !GetKeyState(k, "P") || (A_TimeSinceThisHotkey > 长按时间_毫秒)

	If (A_TimeSinceThisHotkey > 长按时间_毫秒) {
		SetTimer, %执行标签或函数%, -1
		KeyWait, % k
	} Else {
		k := GetKeyState("CapsLock", "T") ? Format("{:U}", k) : k
		SendInput, % "{" k "}"
	}
}
Post Reply

Return to “脚本函数”