autohotkey脚本速度和防止垃圾邮件点击

问题描述 投票:1回答:2

第一个问题是:这个脚本是否尽可能快?

我在谈论一开始的命令是否必要/不必要?关于简单的键重映射,他们有什么帮助吗?

我希望它尽可能快地运行,因为我用这个脚本做了非常强烈和快速的事情。

第二个问题是:如何防止此脚本被垃圾邮件点击?

如果我按住“E或R”,它将是垃圾邮件点击,我不希望它做。

如何解决这个问题?

#NoEnv
#MaxHotkeysPerInterval 99000000
#HotkeyInterval 99000000
#KeyHistory 0
ListLines Off
Process, Priority, , A
SetBatchLines, -1
SetKeyDelay, -1, -1
SetMouseDelay, -1
SetDefaultMouseSpeed, 0
SetWinDelay, -1
SetControlDelay, -1
SendMode Input

*e::Click
return

*r::Click
return

Ins::Suspend
return
windows autohotkey
2个回答
2
投票

回答第二个问题,将KeyWait命令添加到热键KeyWait - Syntax & Usage | AutoHotkey

*e::
Click
KeyWait, e
return

*r::
Click
KeyWait, r
return

2
投票

回答第一个问题,看起来你可能已经从这里获得了标题行:How to optimize the speed of a script as much as possible。该帖子解释了每一行(见下文),甚至还包括其他一些基准。

在你的情况下,如果你只是进行简单的密钥重映射,那么除了SendMode , Input之外,它可能不值得包括任何这些行,因为这是最可靠的发送模式。你提到用这个剧本做“相当激烈和快速的东西”;这意味着什么将确定标题行是否必要。

笔记

1.建议所有脚本都使用#NoEnv,它会禁用环境变量。

2.默认的#MaxHotkeysPerInterval和#HotkeyInterval将通过显示消息框来停止脚本,如果你在其中有某种快速自动循环。只是把一些疯狂的无法访问的高号码忽略这个限制。

3. ListLines和#KeyHistory是用于“记录密钥”的函数。禁用它们,因为它们仅用于调试目的。

4.为Windows程序设置更高的优先级应该可以提高其性能。使用AboveNormal / A.如果你觉得它让事情变得更糟,请评论或删除这一行。

5.默认的SetBatchLines值使您的脚本每行睡眠10毫秒。让它-1不睡觉(但记住在你的循环中包括至少一个睡眠,如果有的话!)

6.即使SendInput忽略SetKeyDelay,SetMouseDelay和SetDefaultMouseSpeed,将这些延迟设置为-1也会提高SendEvent的速度,以防万一SendInput不可用并退回到SendEvent。

7. SetWinDelay和SetControlDelay可能会影响性能,具体取决于脚本。

8. SendInput是最快的发送方法。 SendEvent(默认值)是第二位,SendPlay是第三位(尽管它是最兼容的)。 SendInput不服从SetKeyDelay,SetMouseDelay,SetDefaultMouseSpeed;在该模式下击键之间没有延迟。

9.如果您没有使用任何SetTimer,则在脚本中需要毫秒级可靠性时,高精度睡眠功能非常有用。在某些情况下与SetTimer一起使用时可能会出现问题,因为此睡眠方法会暂停整个脚本。为了使用它,这是一个等待16,67毫秒的例子:DllCall("Sleep",UInt,16.67)

10.使用PixelSearch扫描单个颜色变化的单个像素时,请勿使用Fast参数。根据我的基准测试,在这种情况下,常规PixelSearch比PixelSearch Fast更快。

11.根据文档(此文本位于安装文件中),AHK的Unicode x64bit版本更快,在可用时使用它。

© www.soinside.com 2019 - 2024. All rights reserved.