将 VLC 中的时间戳导入文字处理器

将 VLC 中的时间戳导入文字处理器

我希望能够获取 VLC 媒体播放器中文件的当前播放时间,并将其作为时间戳插入到文字处理器中 - 因此类似于热键组合将在当前光标位置输出“[HH:MM:SS]”。

有没有现成的方法可以做到这一点?如果没有,给定 AutoHotkey 之类的东西,我该如何从 VLC 中获取当前时间?

答案1

我正在使用 AutoHotKey,如下所示。

但这有点棘手,因为据我所知,没有办法预测和定位时间字段中的焦点。我认为这是因为(至少在德语版本中)没有 Alt 键组合。只有(显然)两个 Alt 键组合:按钮“Los”(德语表示“OK”)和“Abbrechen”(德语表示“取消”)。下一个问题是对话框不是模态的,按 Alt 键会激活主窗口上的菜单。

因此我使用MouseClick单击时间字段。坐标可能因屏幕分辨率而异。请根据您的屏幕分辨率更改此设置。例如,使用 AutoHotKeyWindowSpy获取您的坐标

此外,我在脚本的开头存储剪贴板的原始内容和鼠标位置,并在脚本结束时恢复它们。

; # Insert Timestamp from VLC
#ifWinActive ahk_exe WINWORD.EXE
F8::
    ; GoToTimeDialogName:="Zu Zeitpunkt gehen" ; # german name of "Go to Time" dialog
    GoToTimeDialogName:="Go to Time" ; # english name of "Go to Time" dialog
    ClipSaved := ClipboardAll ; # Save the entire clipboard
    MouseGetPos x, y ; # get current mouse position
    if WinExist("ahk_exe vlc.exe") { ; # if vlc existst, i.e. vlc is running
        WinActivate ; # activate vlc window
        Send, {Esc} ; # make sure you are not in other dialogs
        Send, ^t ; # open the "Go to Time" dialog
        if WinExist(GoToTimeDialogName) { ; # if the "Go to Time" dialog exists
            WinActivate ; # activate "Go to Time" dialog exists
            MouseClick, left, 120, 48 ; # click on time field (change this for other screen resolutions)
            Send, ^a ; # select time field
            Send, ^c ; # copy to clipboard
            ClipWait ; # Wait for the clipboard to contain text.
            ts:=clipboard ; # get content of clipboard to var "ts"
            Send, ^t ; # quit "Go to Time" dialog
        }
    }
    if WinExist("ahk_exe WINWORD.EXE") { ; # if word exists
        WinActivate  ; # activate word window
        Send, [%ts%]{space} ; # insert the timestamp surrounded by brackets and a space
    }
    Clipboard := ClipSaved   ; # Restore the original clipboard
    MouseMove %x%, %y% ; # move mouse to original position
Return

相关内容