Autohotkey 自动热键脚本随机失败?

Autohotkey 自动热键脚本随机失败?,autohotkey,Autohotkey,我对自动热键还不熟悉,所以这可能是我最头疼的事情。我昨天把它放在一起,一整天都很好。如今,它无法在随机时间完全执行 我正在做的是强制Chrome使用系统打印对话框,然后只打印第一页 !NumpadDiv:: { Send ^P ; CTRL+SHIFT+p forces System Print Dialog WinWait, Print, , 2 ; Wait for Print Dialog to appear if ErrorLevel

我对自动热键还不熟悉,所以这可能是我最头疼的事情。我昨天把它放在一起,一整天都很好。如今,它无法在随机时间完全执行

我正在做的是强制Chrome使用系统打印对话框,然后只打印第一页

!NumpadDiv::
{
    Send ^P              ; CTRL+SHIFT+p forces System Print Dialog
    WinWait, Print, , 2  ; Wait for Print Dialog to appear
    if ErrorLevel
    {
        MsgBox, WinWait timed out.
        return
    }
    else
    {
        IfWinActive, Print    ; Added to ensure Print window was active
        {
        SetKeyDelay, 300    ; Upped key delay. Thought this may help. It hasn't
            Send {TAB 4}        ; Tabs over to Page Range
            Send 1              ; Print only first page
            Send {Enter}
        }
    }
    return
}

今天,脚本开始在随机时间失败。要么它不切换到页面范围,并将打印所有页面,要么它将切换到页面范围,输入1,然后不打印。在这两种情况下,它都会触发我的电脑的错误声音。如果您能提供任何帮助,我将不胜感激,因为这一功能昨天一整天都在正常工作。

我也想在Lotus Notes中做类似的事情。根据MCL的建议,我重温了clangford1174的代码,如下所示。它在我的Win7机器上工作

!NumpadDiv::
{
    Send ^P              ; CTRL+SHIFT+p forces System Print Dialog
    WinWait, Print, , 2  ; Wait for Print Dialog to appear
    if ErrorLevel
    {
        MsgBox, WinWait timed out.
        return
    }
    else
    {   
        ControlSetText, Edit4, 1
        Send {Enter}        
    }
    return
}
顺便说一句,这个关于用AHK选择打印机的线程也是相关的。

如果您可以直接访问窗口控件,请不要发送钥匙。请尝试以下操作,而不是切换和发送:
ControlSetText,Edit4,1
。也许,该控件有另一个名称,您可以通过window spy查看。另外,
IfWinActive
是绝对多余的,因为
WinWait
保证无论如何。MCL-我想你应该提出一个答案。@MCL谢谢你的建议。就像我说的,这仍然是非常新的,所以我会给它一个尝试和测试out@MCLControlSetText完成了任务。它看起来一直在工作。谢谢你的帮助!我还删除了冗余的WinWait,我知道这可能不会有任何帮助。请将您的解决方案作为答案发布并接受它。