首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >autohotkey无法读取变量A_hour

autohotkey无法读取变量A_hour
EN

Stack Overflow用户
提问于 2020-04-20 00:19:32
回答 1查看 86关注 0票数 0

这是我的第一个脚本,我想要这个脚本从gui中获取变量,然后它会根据变量时间1和时间2上的特定时间将CTRL+E发送到特定的windows应用程序

代码只工作到mytimer:(第45行),之后if语句不工作,没有show msgbox,有什么问题吗?

谢谢你的帮助。

代码语言:javascript
复制
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

#SingleInstance,Force
;Gui Layout
;----------------------
hour:="00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|"
minute:="00||01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|"
SetTitleMatchMode,  2
SetTitleMatchMode, Fast
;Gui,Add,Text, x10, Timer control for toggle MT4 Auto Trading

Gui,Add,Text, x10, Insert your MT4 account ID :
Gui,Add,Edit, x+10 w100 vmtid
Gui,Add,Text, x10, Choose what time to toggle Auto Trading [on/off]
Gui,Add,Text, x10, Time 1 :
Gui,Add,Text, x10, Hour
Gui,Add,Text, x+50, Minutes 
Gui,Add,DropDownList, x10 w50 r10 vh1,% "16||"hour
Gui,Add,DropDownList, x+10 w50 r10 vm1,% minute

Gui,Add,Text, x10 y+10, Time 2 :
Gui,Add,Text, x10, Hour
Gui,Add,Text, x+50, Minutes 
Gui,Add,DropDownList, x10 w50 r10 vh2,% "22||"hour
Gui,Add,DropDownList, x+10 w50 r10 vm2,% minute

Gui,Add,Button, x10 y+20 w100 h50 gactive, Activate !

Gui, +AlwaysOnTop
Gui, Show, x800 y100 w300 h300, MT4 Auto Trading Timer
return

active:
Gui,Submit, NoHide
    ;MsgBox, Starting, Running Script...
#Persistent
SetTimer, mytimer, 60000
return

mytimer:
Gui, Submit, NoHide
;MsgBox, %h1%:%m1% %mtid%  ;<---only until this is working
if (A_Hour = %h1% && A_Min = %m1%)  ;<from this its not working
{

    MsgBox, wow, it h1 show
    WinActivate, %mtid%
    WinWaitActive, %mtid% 
    Send, ^e
}
if (A_Hour = %h2% && A_Min = %m2%)
{

    ;MsgBox, wow2, it h2
    WinActivate, %mtid% 
    WinWaitActive, %mtid% 
    Send, ^e
}
return


^x::ExitApp
EN

回答 1

Stack Overflow用户

发布于 2020-04-20 01:28:59

这是在应该使用现代的、更好的expression syntax的情况下使用legacy syntax的一个常见错误。

在表达式中,这就是您在( )中所做的事情,您不必使用引用变量(将它们包装在%%中)的传统方法。相反,您只需键入变量的名称。

因此,if语句应该如下所示:

if (A_Hour = h1 && A_Min = m1)

您之前所做的,以及这里的另一个答案所做的(将变量包装在表达式语句中的%%中),基本上都是引用指向变量的指针。

但是当指针不存在时,最终结果就是nothing

(%A_Hour% = %h1% && %A_Min% = %m1%)

计算结果为

("" = "" && "" = "")

这总是正确的(假设指针不存在)

这可能是一个糟糕的解释,很难解释,但重点是,永远不要将%%中的变量包装在表达式中。

总而言之,我建议摆脱使用遗留语法。现在已经不是2008年了。

文档页面,我在上面链接了两次,是一个很好的参考资料,可以开始了解其中的差异。

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

https://stackoverflow.com/questions/61307667

复制
相关文章

相似问题

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