我希望能够获取 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