【问题标题】:Timer runs only once定时器只运行一次
【发布时间】:2013-03-29 03:02:38
【问题描述】:

以下脚本运行良好。

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

#Persistent
#SingleInstance


SetTimer, CheckApp, 4000
Return


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

【问题讨论】:

    标签: autohotkey kingsoft


    【解决方案1】:

    在我回答这个问题之前。请您返回上一个问题并标记您收到的答案,方法是单击白色复选标记将其变为绿色。

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

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

    我删除了您的 Sleep, 2000。添加此 sleep 命令会阻止 ahk 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

    不确定您为什么要这样做,因为启动应用程序需要执行一个操作(单击图标或按下快捷方式),该操作可用于触发脚本。现在你必须不断地在后台运行检查。您可以创建一个看起来像金山软件的图标,但实际上是一个 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_class TMainForm 现在发送是返回的时间 上述脚本有效。但它缺少一个主要功能。当我关闭当前的 PolyEdit 窗口并打开第二个 PolyEdit 窗口时,我需要让它工作。现在,这不会发生。现在我必须在打开第二个 PolyEdit 窗口之前重新加载脚本。我不想重新加载脚本。这就是我迷路的地方。
    • 在这种情况下,为什么不使用 ahk 脚本通过热键启动 PolyEdit 窗口。请参阅上面的修改脚本。
    • 我同意罗伯特。我非常感谢您对如何接受答案的意见。我100%同意你。关于使用热键启动脚本。是的,这行得通。但我正在寻找一个无需热键即可运行的脚本。我假设没有任何东西是对的吗?
    • 我必须使用鼠标点击。只有几个键盘快捷键,没有一个有用。
    • 哇!有效!罗伯特,您添加的脚本有效!我需要几个月的学习才能制作出一个有效的脚本。你是男人!我把复选标记变成绿色。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多