首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在IF条件下创建向上/向下操作循环时出错

在IF条件下创建向上/向下操作循环时出错
EN

Stack Overflow用户
提问于 2019-01-27 20:16:12
回答 1查看 47关注 0票数 0

我曾尝试编写一个脚本,其中Gui控件一旦选中复选框就会切换与其关联的特定键。

我成功地添加了IF Ab =1 send {a down},然后添加了一个else来检查密钥的状态,使它在100ms后上升,这样它就可以循环。然而,我想做一个向前然后向后的循环(这些键是W表示向前,S表示向后),不幸的是我没有成功。

不需要添加所有的代码...以下是重要的部分。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TTshowing = 0
Gui, -Caption +LastFound +AlwaysOnTop
Gui, Add, Checkbox, gRefocus cWhite, Y
Gui, Add, Checkbox, gRefocus cWhite, S
Gui, Add, Checkbox, gRefocus cWhite, U
Gui, Add, Checkbox, gRefocus cWhite, I
Gui, Add, Checkbox, gRefocus cWhite, O
Gui, Add, Checkbox, gRefocus cWhite, M
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Loop
{
   GuiControlGet, Yb, , Button1
   GuiControlGet, Sb, , Button2
   GuiControlGet, Ub, , Button3
   GuiControlGet, Ib, , Button4
   GuiControlGet, Ob, , Button5
   GuiControlGet, Mb, , Button6
   if Yb = 1
      Send y
   if Sb = 1
      Send {s down}
   if Ub = 1
      Send u
   if Ib = 1
      Send I
   if Ob = 1
      Send O
   if Mb = 1
        GetKeyState, keyWstate, W
        if %keyWstate% = up
        Send {w down}
        Sleep 600
        GetKeyState, keyWstate, W
        if %keyWstate% = down
        Send {w up}
        Sleep 100   
        GetKeyState, keySstate, S
        if %keySstate% = up
        Send {s down}
        Sleep 650
        GetKeyState, keySstate, S
        if %keySstate% = down
        Send {s up}
        Sleep 100}
}
Return

这将允许向上/向下,我还尝试发送{w down }睡眠600 {发送等。不工作只接受最后一次发送,延迟动作等也是如此。

当前的代码允许向上或向下,但不能同时允许两者,这是我修改的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Loop
{
   GuiControlGet, Yb, , Button1
   GuiControlGet, Sb, , Button2
   GuiControlGet, Ub, , Button3
   GuiControlGet, Ib, , Button4
   GuiControlGet, Ob, , Button5
   GuiControlGet, Mb, , Button6
   if Yb = 1
      Send y
   if Ub = 1
      Send u
   if Ib = 1
      Send I
   if Ob = 1
      Send O
   if Sb = 1
      Send {S down}
   if Mb = 1
      Send {W down}
   else
   GetKeyState, keySstate, S
   if %keySstate% = down
      Send {s up}
   Sleep 100
   GetKeyState, keyWstate, W
   if %keyWstate% = down
      Send {w up}
   Sleep 100
}
Return

最初的代码是别人写的,我成功地修改了它,但是为了制作这个循环,我还试图创建一个辅助循环,也没有成功。

我想做的是在如果Mb =1的情况下

要让系统按下S 1000ms,然后按up,然后按w 1000ms,然后按up并循环,这样它就可以无限地来回移动。

EDIT : Answer found :感谢您的帮助。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Loop
{
   GuiControlGet, Yb, , Button1
   GuiControlGet, Ub, , Button2
   GuiControlGet, Ib, , Button3
   GuiControlGet, Ob, , Button4
   GuiControlGet, Sb, , Button5
   GuiControlGet, Wb, , Button6
   GuiControlGet, Tb, , Button7
   if Yb = 1
      Send y
   if Ub = 1
      Send u
   if Ib = 1
      Send I
   if Ob = 1
      Send O
   if Tb = 1
      Send {TAB}
   if Sb = 1
      Send {S down}
    Sleep 500
   GetKeyState, state, S
   if state = D
      Send {S up}
   Sleep 50
   if Wb = 1
      Send {W down}
   Sleep 500
   GetKeyState, state, W
   if state = "D"
      Send {W up}
   Sleep 50
}
Return

将代码从statename更改为简单的state方便了通信,还有Up和down是变量,它们是未知的,只能在getstate中使用U或D。因此,通过在初始击键之后添加它们并删除else来修改它们解决了它,因此现在它来回移动。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-29 19:26:51

看起来你的代码可能有几个问题。GetKeyState在output变量中存储"D“、"U”或不存储任何内容,而不是整个单词“up”或“down”。另一个问题与IF语句的语法有关。在您的例子中,您可能想要这样的代码:If keySstate = "D"

此外,您还提到希望保持1000ms;但是,您的代码设置为100ms。

这不是错误,但您可能需要考虑改用GetKeyState()函数。这样你就可以把它和IF语句结合起来,比如If GetKeyState( "s" )

https://www.autohotkey.com/docs/commands/GetKeyState.htm

请使用提到的更正更新您的代码,如果仍然有问题,我们可以从那里开始。

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

https://stackoverflow.com/questions/54392455

复制
相关文章
laravel 预加载特定的列
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112351.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
7140
laravel 预加载特定的列
用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
全栈程序员站长
2022/07/09
1.7K0
PostgreSQL 列转行问题
SELECT relative_label_content FROM frk_s.label_cor_gene
全栈程序员站长
2022/07/04
1.1K0
Postgresql 强制修改列的类型
当列的类型为字符类型,当我们想修改为数值类型时,是无法成功的,这个时候我们可以通过以下方法进行修改。
飞奔去旅行
2019/06/13
2.9K0
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.1K0
问与答130:如何比较两列文本是否完全相同?
Q:最近,我的一项任务是需要比较包含多行数据的两列中,每行对应列的文本是否完全相同。例如,列A中有一系列文本,列B中也有一系列文本,比较A1中的文本是B1中的文本是否完全相同,A2与B2中的文本是否完全相同,……,等等。
fanjy
2021/08/31
2K0
性能优化-如何选择合适的列建立索引
1、在where从句,group by从句,order by从句,on从句中的列添加索引 2、索引字段越小越好(因为数据库数据存储单位是以“页”为单位的,数据存储的越多,IO也会越大) 3、离散度大的列放到联合索引的前面
cwl_java
2020/02/13
2.1K0
性能优化-如何选择合适的列建立索引
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
sublime 列选择 原
2016年11月17日 09:27:24 zzh_my 阅读数:20295 标签: sublime text 更多
拓荒者
2019/03/08
2.6K0
将Excel特定某列数据删除
我们之前将表单内的某列数据分到新的excel文件里,那么如何批量将新Excel文件这一特定列进行删除呢?
繁华是客
2023/03/03
2K0
分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
在 Citus 集群上运行高效查询要求数据在机器之间正确分布。这因应用程序类型及其查询模式而异。
为少
2022/03/31
4.5K0
分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
SQL如何只让特定列中只显示一行数据
我们如果在某个表里面,如何让其中某列的其中一行数据,只是显示一次呢? 示例表 StudentID Last_Name First_Name Gender GradeLevel Class Pupil_Email Relationship Pupil_Parent_Email 5013 Wang Zack M Grade 9 Senior SG9 B 5013@example.com 爸爸 5013a@qq.com 5013 Wang Zack M Grade 9 Senior SG9 B 5013@exam
繁华是客
2023/03/03
8.8K0
Mysql中的列类型
支持的范围是1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
Tony He
2022/11/17
6.5K0
根据表格特定列的内容来追加图标 原
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
1.4K0
如何生成A-AZ列 excel表的列 不用序号的那种?
前几天在Python最强王者交流群【逸】问了一个Pyhton处理Excel的问题,这里拿出来给大家分享下。
前端皮皮
2022/12/19
1.7K0
如何生成A-AZ列 excel表的列 不用序号的那种?
Postgresql在哪里使用列统计信息?
对pg_statistic表的查询都是走syscache的,要找到所有使用列统计信息地方,遍历系统表索引即可
mingjie
2023/10/13
1590
Postgresql在哪里使用列统计信息?
PostgreSQL表用户列最大个数
有些业务可能有这么个需求:需要增加用户列,即通过ALTER TABLE ... ADD...来添加用户列。那么PG/GP中是否会有列个数的限制呢?
yzsDBA
2023/09/08
3250
PostgreSQL表用户列最大个数
删除列中的 NULL 值
今天接到一个群友的需求,有一张表的数据如图 1,他希望能通过 SQL 查询出图 2 的结果。
白日梦想家
2020/07/20
9.9K0
删除列中的 NULL 值
R语言:以多列标准筛选特定行
在本期,我们会运用一个病例数据为大家进行讲解示范,这也是大猫课堂第一次针对阅读者提问进行的反馈,也希望大家能提供一些有趣的问题,来和我们一起分享,同时也感谢读者孤鹜惜秋,与我们分享其问题。话不多说,马上进入正题。
用户7652506
2020/08/12
2K0
R语言:以多列标准筛选特定行
分离链接的散列散列代码实现
散列 散列为一种用于以常数平均时间执行插入,删除和查找的技术。一般的实现方法是使通过数据的关键字可以计算出该数据所在散列中的位置,类似于Python中的字典。关于散列需要解决以下问题: 散列的关键字如何映射为一个数(索引)——散列函数 当两个关键字的散列函数结果相同时,如何解决——冲突 散列函数 散列函数为关键字->索引的函数,常用的关键字为字符串,则需要一个字符串->整数的映射关系,常见的三种散列函数为: ASCII码累加(简单) 计算前三个字符的加权和$\sum key[i] * 27^{i}$ (不太
月见樽
2018/04/27
1.6K0

相似问题

增强序列化-启用对象跟踪

12

在MVC4项目中使用Json.NET序列化程序

30

用JSON.net反序列化Api对象

13

WCF、Silverlight 5、自跟踪实体和(反)序列化

10

如何在Asp.Net核心项目中使用Application Insights启用依赖项跟踪

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文