将键盘快捷键传递给QProcess
问题描述:
我在QProcess中运行vlc以启动视频捕获流。将键盘快捷键传递给QProcess
然而,当我做
m_process.terminate();
它不会终止VLC过程中,做
m_process.kill();
导致程序崩溃,不正确地保存视频文件。我看到QProcess有一个write()函数,所以我想我可以发送快捷键Ctrl + Q到QProcess,但我似乎无法找到一种方法来使它工作。有任何想法吗?
答
我找到了一个解决方案,但我并不特别喜欢它,因为它不使用Qt并且依赖于操作系统。
我写了一个将过程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")
我只是改变了全球的快捷方式上VLC戒烟,以“Q”和'设置m_process.write(“Q”);'也不起作用 – tripleM