2016-03-08 205 views
2

我在QProcess中运行vlc以启动视频捕获流。将键盘快捷键传递给QProcess

然而,当我做

m_process.terminate(); 

它不会终止VLC过程中,做

m_process.kill(); 

导致程序崩溃,不正确地保存视频文件。我看到QProcess有一个write()函数,所以我想我可以发送快捷键Ctrl + Q到QProcess,但我似乎无法找到一种方法来使它工作。有任何想法吗?

+0

我只是改变了全球的快捷方式上VLC戒烟,以“Q”和'设置m_process.write(“Q”);'也不起作用 – tripleM

回答

0

我找到了一个解决方案,但我并不特别喜欢它,因为它不使用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")