AHK IF声明

时间:2013-06-26 08:57:07

标签: arrays autohotkey

ArrayCount = 0
Loop, Read, Times.txt   ; This loop retrieves each line from the file.
{
    ArrayCount += 1  ; Keep track of how many items are in the array.
    ArrayTime%ArrayCount% := A_LoopReadLine  
}

WinGetTitle, Title, A
Loop %ArrayCount%
{
 element := ArrayTime%A_Index%
 Time = %A_WDay%%A_Hour%%A_Min%
 msgbox %Time% , %element%
 if (Time=%element%)
 {
  IfWinExist, Test.txt
  {
   WinActivate
    Sleep 500
    Send Hi{enter}
    msgbox %Time% , %element%
    Sleep 500
    WinActivate, %Title%
  }
 }
}

好的,主要问题在于这部分:

if(Time =%element%)

我也试过

if(%Time%=%element%)

if(A_WDay.A_Hour.A_Min =%element%)

我认为其他一些类似的变化,我得到的问题是它总是正确的,或者总是假的,这取决于我如何写它。 文本文件内部是这样的列表:

10000

10700

11400

20400

21100

我添加了一个额外的行,它有当前的测试时间,我添加了msgbox进行比较,我可以清楚地看到它们在它不起作用时都是相同的,或者当它不同时它们是不同的确实。对于这样一个基本问题我很抱歉,但我觉得我已经尝试了很长时间,并且在变量和IF语句上阅读了所有内容,感谢您的帮助。

还有一点是我需要它在星期天午夜开始每隔7小时起飞一次,这就是我想出的,如果有一个更好的方式,我也很高兴听到这个

2 个答案:

答案 0 :(得分:0)

试试这个:

if % Time = element
{
    MsgBox, Equal!
}

对于计划部分,尝试通过Windows任务计划程序运行脚本(点击Windows+R,键入taskschd.msc并按Enter键)。互联网上有教程解释如何创建新任务。

答案 1 :(得分:0)

关于计时器,请看一下这个例子。

SetTimer, AlertType1, 60000
ToAlertType1:=1
ToAlertType2:=1

AlertType1:
;If A_WDay between 2 and 7              ; is day monday - sunday?
;{
If (A_Hour = 7 or A_Hour = 13)
{
    If (ToAlertType1)
    {
        SoundBeep, 500, 500
        ToAlertType2:=1
        ToAlertType1:=0
        MsgBox, 4096,%AppName%, Msg1.
        Return
    }
}
Else if (A_Hour = 21)
{
    If (ToAlertType2)
    {
        SoundBeep, 500, 500
        ToAlertType2:=0
        ToAlertType1:=1
        MsgBox, 4096,%AppName%, Msg2.
        Return
    }
}
;}
Return