后台键鼠本来就是一件难实现的事,ControlClick的作用范围和局限性比较大。ControlClick不行的话,应该尝试其它后台方法。比如:大漠插件

AHKEditor编辑器

 

:-)大

啊撒大声地阿萨德阿是打算

阿萨德阿萨德 阿萨德

Sleep

在继续前等待指定的时间量.

Sleep, Delay

参数

Delay
要暂停的时间量(单位为毫秒), 介于 0 和 2147483647(24 天) 之间, 可以为表达式.

备注

由于操作系统中计时系统的精确度, Delay 通常会被向上取整到最近的 10 或 15.6 毫秒的倍数(取决于所安装的硬件和驱动的类型). 例如, 在大部分 Windows 2000/XP 系统上介于 1 和 10(含边界) 的延时都相当于 10 或 15.6. 要实现更短的延时, 请参阅示例.

如果 CPU 在负载时, 那么实际的延时可能超过请求的时间. 这是因为在给脚本另一个时间片之前, 会给每个有需要的进程一个 CPU 时间片(一般为 20 毫秒).

延时为 0 会将脚本当前时间片的剩余部分分配给其他需要的进程(只要它们的优先级不是显著比脚本低). 因此, 延时为 0 实际会产生在 0 和 20 ms(或更多) 之间的延时, 取决于有需要的进程的数目(如果没有这样的进程, 则完全没有延时). 然而, 0 的 Delay 应该比任何更长的 Delay 会更早结束.

当脚本休眠时, 可以通过热键自定义菜单项计时器启动新的线程.

Sleep -1: -1 的 delay 不会休眠, 相反地它让脚本立即检查消息队列. 这可用来强制任何迫近的中断在指定的位置发生, 而不是在更随机的位置. 请参阅 Critical 了解更多细节.

SetKeyDelaySetMouseDelaySetControlDelaySetWinDelaySetBatchLines

示例

 在继续执行前等待 1 秒.

Sleep 1000

 等待 30 分钟后再继续执行.

MyVar := 30 * 60000

; 30 表示分钟数, 而 乘以 60000 得出以毫秒为单位的时间.

Sleep MyVar

; 休眠 30 分钟.

 演示如何休眠比普通的 10 或 15.6 毫秒更短的时间. 注意: 像这样的脚本运行时, 整个操作系统和所有的应用程序都会受到下面的 timeBeginPeriod 的影响.

SetBatchLines -1

; 确保此方法最高的效率.

SleepDuration := 1

; 这里有时可以根据下面的值进行细微调整(例如 2 与 3 的区别).

TimePeriod := 3

; 尝试 7 或 3. 请参阅下面的注释. ; 在休眠持续时间一般向上取整到 15.6 ms 的个人电脑中, 尝试 TimePeriod:=7 来允许 ; 稍短一点的休眠, 而尝试 TimePeriod:=3 或更小的值来允许最小可能的休眠.

DllCall("Winmm\timeBeginPeriod", "UInt", TimePeriod)

; 作用于所有的应用程序, 而不只是脚本的 DllCall("Sleep"...), 但不影响 SetTimer

.
Iterations := 50
StartTime := A_TickCount

Loop %Iterations%
    DllCall("Sleep", "UInt", SleepDuration)

; 必须使用 DllCall 而不是 Sleep 命令.

DllCall("Winmm\timeEndPeriod", "UInt", TimePeriod)

; 应该进行调用来让系统恢复正常.

MsgBox % "Sleep duration = " . (A_TickCount - StartTime) / Iterations
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。