2016-03-08 80 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")