Autohotkey 计时器只运行一次

Autohotkey 计时器只运行一次,autohotkey,kingsoft,Autohotkey,Kingsoft,下面的脚本很好用 它每4秒发送一次鼠标点击 金山作家。 但是当我将计时器长度更改为-4000时 而不是4000,以便计时器只运行一次 这个脚本甚至一次也不能用了。 我再也无法将鼠标单击发送到 金山作家。 我做错了什么 #Persistent #SingleInstance SetTimer, CheckApp, 4000 Return CheckApp: IfWinActive, ahk_class QWidget { sleep 2000 Click 486, 15 Click

下面的脚本很好用

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

#Persistent
#SingleInstance


SetTimer, CheckApp, 4000
Return


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

在我回答这个问题之前。请您回到上一个问题,点击白色复选标记将其变为绿色,标记您在那里收到的答案

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

#Persistent
#SingleInstance
SetTimer, CheckApp, 4000
Return

CheckApp:
IfWinActive, ahk_class QWidget
{
    SetTimer, CheckApp, Off    
    Click 486, 15
    Click 570, 93
}
Return
我拿走了你的睡眠,2000年。添加此sleep命令将阻塞ahk 50%的时间(睡眠50%),并且不会添加任何有用的内容。它甚至使另一个应用程序在这2秒钟内窃取焦点的可能性增大,因此鼠标单击可以转到另一个应用程序。。。 你必须使用鼠标点击还是可以使用键盘快捷键。当菜单移动或展开/收缩时,鼠标位置往往不可靠

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

更新2 不知道为什么要这样做,因为启动应用程序需要一个操作(单击图标或按快捷方式),该操作可用于触发脚本。现在你必须不断地在后台进行检查。您可以创建一个看起来像金山软件的图标,但实际上是一个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

我按照你的要求把白色的复选标记变成了绿色。我不知道这个功能。谢谢你的回复!我目前正在接近使用以下脚本的解决方案:#Persistent WinWaitActive,ahk_类tmaninform Send Now是返回上述脚本工作的时间。但它缺少一个主要特征。当我关闭当前的PolyEdit窗口并打开第二个PolyEdit窗口时,我需要使它工作。现在,这种情况没有发生。现在,我必须在打开第二个PolyEdit窗口之前重新加载脚本。我不想重新加载脚本。在这种情况下,为什么不使用ahk脚本以热键启动PolyEdit窗口呢。见上面修改的脚本。我同意罗伯特。我非常感谢你对如何接受答案的意见。我百分之百同意你。关于使用热键启动脚本。是的,行得通。但是我正在寻找一个没有热键的脚本。我的假设是正确的吗?我必须使用鼠标点击。只有几个快捷键,没有一个是有用的。哇!成功了!罗伯特,你加的剧本成功了!我花了好几个月的时间才写出一个有效的剧本。你就是那个人!我把复选标记变成绿色。谢谢
#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