自动脚本不运行

  • 本文关键字:运行 脚本 autoit
  • 更新时间 :
  • 英文 :


我的 AutoIt 脚本应该在给定的时间间隔内每 40 分钟单击一次左键:

Func Main()
Run("kocske.jpg") 
While 0 < 1
If CheckTime() == true Then 
MouseClick("left")
EndIf
; Sleep for 40 minutes
Sleep(60000 * 40)
WEnd
EndFunc
; The function checks if the current time is between 17:00 and 20:00
Func CheckTime()
If @Hour >= 17 AND @Hour <= 20 Then
Return true
Else
Return false
EndIf
EndFunc

我将其保存为 .au3 文件并将其编译为可执行文件。但是当我运行它时,什么也没发生(好像它从未启动过)。

我添加了Run("kocske.jpg")来测试脚本是否启动,并在脚本的文件夹中放置了一个名为"kocske.jpg"的JPG文件。它不会打开文件,并且任务管理器不会显示它正在运行。

为什么我的脚本无法运行?

我稍微重写了你的程序以包括通常的习惯(下面评论)

Main()  ; calls the Main() Function
Func Main()
ShellExecute("kocske.jpg") ; opens the image with it's default viewer; Note: you should add full path
While True
If CheckTime(17, 21) Then   ; good habit to work with parameters; makes your function flexible
; probably you want to locate your mouse to a special location before clicking
; and also activate a certain application? Consider ControlClick()
MouseClick("left")
EndIf
Sleep(60000 * 40) ; Sleep for 40 minutes
WEnd
EndFunc   ;==>Main
; The function checks if the current time is between 17:00 and 20:00 (19:59:59)
Func CheckTime($TimeA = 17, $TimeB = 20) ; defines default parameters, if they are not given
If @HOUR >= $TimeA And @HOUR < $TimeB Then Return True  ; no Else needed
Return False
EndFunc   ;==>CheckTime

注意:@HOUR < $TimeB而不是@HOUR <= $TimeB

  1. 运行函数

    为什么我的脚本无法运行?

    因为函数是定义的,但不是调用的。

    如果你想执行Main(),那么在函数定义(全局范围)之外添加一行"Main()"。示例(第一行,根据文档 - 关键字参考 - 功能...返回。。。EndFunc):

    Main()
    Func Main()
    Run("kocske.jpg") 
    While 0 < 1
    If CheckTime() == true Then 
    MouseClick("left")
    EndIf
    ; Sleep for 40 minutes
    Sleep(60000 * 40)
    WEnd
    EndFunc
    ; The function checks if the current time is between 17:00 and 20:00
    Func CheckTime()
    If @Hour >= 17 AND @Hour <= 20 Then
    Return true
    Else
    Return false
    EndIf
    EndFunc
    
  2. 打开文件

    我添加了Run("kocske.jpg")来测试脚本是否启动......

    根据文档 - 函数参考 -Run()

    运行外部程序。

    "kocske.jpg"不是">外部程序";请改用ShellExecute("kocske.jpg")

    使用 ShellExecute API 运行外部程序。

  3. 比较运算符

    分配和比较之间的=使用没有区别(根据文档 - 语言参考 - 运算符)。例:

    ; Equal sign (=) as assignment operator:
    Global Const $g_bValue = True
    ; Equal sign (=) as comparison operator:
    If $g_bValue = True Then; Or just: If $g_bValue Then
    Beep(500, 1000)
    EndIf
    

    根据文档 - 语言参考 - 运算符:

    ==

    测试两个字符串是否相等。区分大小写。如果左值和右值还不是字符串,则它们将转换为字符串。仅当字符串比较需要区分大小写时,才应使用此运算符。

相关内容

  • 没有找到相关文章

最新更新