首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在AHK遇到了GetKeyState的麻烦

我在AHK遇到了GetKeyState的麻烦
EN

Stack Overflow用户
提问于 2021-02-10 03:30:35
回答 1查看 1K关注 0票数 0

下面是我写的一个alt+tab程序,由于某种原因,它不能工作。

代码语言:javascript
复制
while x = 1
{
    mb1 := GetKeyState(j)
    mb2 := GetKeyState(k)
    if (mb1 = 1) and (mb2 = 1)
    {
        Send, {Alt Down}
        Send, {Tab Down}
        sleep, 50
        Send, {Alt Up}
        Send, {Tab Up}
    }
}

我尝试过多种循环和密钥检测方法,但都没有效果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 04:03:18

您不需要在if语句之前将keystate值存储在变量中;您可以在if语句本身期间检查它们。

因此,您可以通过这样的方法来实现这个更改:

代码语言:javascript
复制
Loop
{
    if (GetKeyState("j") && GetKeyState("k"))
    {
        Send, {Alt Down}
        Send, {Tab Down}
        sleep, 50
        Send, {Alt Up}
        Send, {Tab Up}
    }
}

但是,如果出于某种原因需要保存KeyStates的值,有几种方法可以做到这一点:

  1. 在if-语句中检查这些值时,只需从GetKeyStates中保存它们。

注意:对于每个迭代都要始终更新的两个变量,您需要用效率较低的&&替换效率较低的&,因为&&将在确定表达式为false时立即停止检查变量。

这看起来应该是:

代码语言:javascript
复制
Loop
{
    if (mb1:=GetKeyState("j") & mb2:=GetKeyState("k"))
    {
        Send, {Alt Down}
        Send, {Tab Down}
        sleep, 50
        Send, {Alt Up}
        Send, {Tab Up}
    }
    
    MsgBox During the last check, j was %mb1%, and k was %mb2%!
}

  1. 使用替代的GetKeyState命令语法

注意:尽管该命令的这个版本使得将命令的输出保存到变量中更加简单,但它是折旧的,不建议在新脚本中使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66130533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档