等热键?

时间:2015-11-27 17:26:58

标签: scripting user-defined-functions autoit hotkeys

我想知道为什么我的脚本不会等我发送热键 Alt + Shift + q

WinWaitActive("Open")
HotKeySet("+!q", "ClickFill")
Func ClickFill()
    ControlClick("Open", "", "[CLASS:32770]")
    ControlSend("Open", "", "[CLASS:32770]", "C:\au3")
    Exit

脚本在“打开”后退出。对话框变为活动状我试图让脚本点击类32770 ,这是地址栏,然后将au3目录发送给它,这是我的自动脚本目录。我希望脚本永远保持开放,所以每当我尝试打开一些东西时,它都有效。

第二次尝试

WinWaitActive("Open")
HotKeySet("+!q", "ClickFill")

While(1)
    Sleep(1000)
WEnd

Func ClickFill()
    ControlClick("Open", "", "[CLASS:32770]")
    ControlSend("Open", "", "[CLASS:32770]", "C:\au3")
    Exit

脚本保持打开状态,但热键无效。

1 个答案:

答案 0 :(得分:3)

看起来您只需要使用“EndFunc”关闭您的功能。这对我有用。

$mustache = new Mustache_Engine(array(
    'loader' => new Mustache_Loader_FilesystemLoader($pathToTemplateDir),
));

以下是Notepad ++的一些工作代码

WinWaitActive("Open")
HotKeySet("+!q", "ClickFill")

While(1)
    Sleep(1000)
WEnd

Func ClickFill()
    MsgBox(262144,"","Look I work!")

    ControlClick("Open", "", "[CLASS:32770]")
    ControlSend("Open", "", "[CLASS:32770]", "C:\au3")
    Exit
EndFunc

在上面的例子中,您将看到我在ToolbarWindow32控件上使用ControlFocus和ControlCommand。大多数对话框窗口都有一个ToolbarWindow32控件。要模拟单击它们,您必须使用带有SendCommandID选项的ControlCommand。您可以在AutoIt信息工具的工具栏选项卡下获取该ID。但是,您将看到一旦单击ToolbarWindow32控件,它就会将焦点放在编辑控件上。如果要更改目录,则需要将编辑控件发送到该编辑控件。使用AutoIt工具查找编辑控件可能有点棘手。您必须确保在选项下未选中“冻结”。

enter image description here

如果您仍然遇到代码问题,我建议您首先确保您可以在没有热键的情况下使代码正常工作。然后用一个字母的热键尝试它,然后最后用你的多个热键组合尝试它。由于无法访问您的计算机,我只是在猜测,但我怀疑您没有正确访问地址栏。您的计算机上可能还有一个正在使用相同热键的程序。