【问题标题】:AutoHotkey FileGetTime Access ScreenShotAutoHotkey FileGetTime 访问 ScreenShot
【发布时间】:2016-08-19 01:16:00
【问题描述】:

这是我迄今为止编写的脚本。它仅部分有效。 只有在播放警报后,我才需要它来截取电脑的屏幕截图。当我运行脚本时,它会立即截屏,将其保存在正确的文件名和位置下,然后关闭 mspaint。然后它将每 20 秒循环一次,然后再循环一次。我的 while 命令出了点问题,我无法弄清楚。我如何阅读我的语法,它应该停留在 while 循环中,直到 Elapsed 小于 20 秒。然后一旦文件被访问,退出while循环并继续无限循环。

Loop {

    FileGetTime, LastTime, alarm.wav, A
    Elapsed := A_Now - LastTime

    while (Elapsed > 20000){
        FileGetTime, LastTime, alarm.wav, A
        Elapsed := A_Now - LastTime
    }

    send {PrintScreen}
    Run, MSPaint
    WinWaitActive, Untitled - Paint
    Send ^v
    Sleep, 50
    Send ^s
    Sleep, 50
    Send c:\Screenshots\
    Send %A_Now%
    Sleep, 100
    Send {Enter}
    Sleep, 2000
    WinClose, ahk_exe MSPaint.exe


    Sleep, 20000

}

【问题讨论】:

  • 获取文件时间算作 Access,我猜。尝试删除, A
  • 不,“A”告诉应用程序获取文件的“A”访问时间。
  • 我很抱歉不是故意让它像那样脱落。 :) 如果我删除“A”它默认为“M”并获取文件的修改时间。我不能使用修改后的时间,因为播放文件不会修改它。我也检查过,运行脚本不会影响上次访问时间。在我关闭脚本后立即显示 4 分钟前的访问时间。

标签: autohotkey


【解决方案1】:

我发现了一个

MsgBox %Elapsed%

在while循环中。它计算秒而不是毫秒。将 while 方程从 20000 降至 20,现在可以使用了。

#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.

LastTime = 0

Loop 
{

    Elapsed = 30

    while (Elapsed > 20)
    {
        FileGetTime, LastTime, alarm.wav, A
        Elapsed := A_Now - LastTime
    }

    send {PrintScreen}
    Run, MSPaint
    WinWaitActive, Untitled - Paint
    Send ^v
    Sleep, 50
    Send ^s
    Sleep, 200
    Send c:\Screenshots\%A_Now%
    Sleep, 100
    Send {Enter}
    Sleep, 200
    WinClose, ahk_exe MSPaint.exe


    Sleep, 20000

}

【讨论】:

    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多