定时器只运行一次

时间:2013-03-29 03:02:38

标签: autohotkey kingsoft

下面的脚本工作正常。

每4秒发送一次鼠标点击 到金山作家。 但是当我将Timer长度更改为-4000时 而不是4000,以便计时器只运行一次 该脚本甚至不再有效。 我无法再发送鼠标点击 金山作家。 我做错了什么?

#Persistent
#SingleInstance


SetTimer, CheckApp, 4000
Return


CheckApp:
IfWinActive, ahk_class QWidget
{
    sleep 2000
Click 486, 15
Click 570, 93
}
Return

1 个答案:

答案 0 :(得分:3)

在我回答这个问题之前。你是否愿意回到上一个问题并在那里标记答案,点击白色复选标记将其变为绿色。

我曾经尝试过负值并且对结果不满意,所以我决定总是关闭计时器而不是使用负值。

#Persistent
#SingleInstance
SetTimer, CheckApp, 4000
Return

CheckApp:
IfWinActive, ahk_class QWidget
{
    SetTimer, CheckApp, Off    
    Click 486, 15
    Click 570, 93
}
Return

我删除了你的睡眠,2000。添加这个睡眠命令会阻止50%的时间(睡眠50%)并且没有任何用处。它甚至使得另一个应用程序在2秒内更大程度地窃取焦点的机会,因此鼠标点击可以转到另一个应用程序...... 您是否必须使用鼠标单击或是否可以使用键盘快捷键。当菜单移动或扩展/收缩时,鼠标位置往往不可靠。

更新

#Persistent
#SingleInstance
Return ; Prevent the [Win]+w from executing on startup of script.

#w:: ; [Win]+w launches PolyEdit, waits for window and sends two mouse clicks.
Run, path to the PolyEdit window.exe
WinWaitActive, ahk_class QWidget
Sleep, 1000
Click 486, 15
Click 570, 93
Return

现在您可以将ahk脚本放在Windows开始菜单中,并通过[Win] + w(或您定义的任何其他键...)启动PolyEdit。

更新2

不确定为什么要这样做,因为启动应用程序会执行操作(单击图标或按快捷键),这可用于触发脚本。现在你必须不断在后台运行检查。你可以创建一个看起来像KingSoft的图标,但实际上是一个ahk脚本。

但是你走了!

#Persistent
#SingleInstance
SetTimer, CheckApp, 400
Return
InitiateKS := true

CheckApp:
IfWinExist, ahk_class QWidget
{
    If InitiateKS
    {
        InitiateKS := false
        WinActivate, ahk_class QWidget
        TrayTip, KingSoft, Started, 1
        ;Click 486, 15
        ;Click 570, 93
    }
}
Else ; if no KingSoft is running
{
        InitiateKS := true
}
Return