将键盘快捷键传递给QProcess

时间:2016-03-08 13:09:17

标签: qt keyboard-shortcuts vlc qprocess

我正在QProcess中运行vlc来启动视频捕获流。

但是,当我这样做时

data[Object.keys(data)[0]] = ''

它不会终止vlc进程,并且正在执行

m_process.terminate();  

使程序崩溃,并且无法正确保存视频文件。

我看到QProcess有一个write()函数,所以我想我可以将热键Ctrl + Q发送到QProcess,但我似乎找不到让它工作的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,但我并不特别喜欢它,因为它没有使用Qt并且依赖于os。

我编写了一个以进程PID为参数的vbscript。

set shell = WScript.CreateObject("WScript.Shell")
dim Time
Time = 0
Do Until Success = True OR Time > 5000
    Success = shell.AppActivate(Wscript.Arguments(0))
    Wscript.Sleep 1000
    Time = Time + 1000
Loop
if Success = True Then
    Wscript.Echo "Found vlc"
    shell.SendKeys "^q"
Else
    Wscript.Echo "Did not find vlc"
End if

它还有一个时间限制来激活aplicataion。

然后我通过系统

运行它
system("cscript myScript.vbs PID")