2016-03-08 4 views
2

Я запускаю vlc в QProcess, чтобы запустить поток видеозахвата.Пропустить комбинацию клавиш для QProcess

Однако, когда я

m_process.terminate(); 

не прерывает процесс VLC, и делать

m_process.kill(); 

сбой программы, и не сохранить видео файл должным образом.

Я вижу, что у QProcess есть функция write(), поэтому я думал, что могу отправить горячую клавишу Ctrl + Q в QProcess, но я не могу найти способ заставить ее работать. Есть идеи?

+0

Я только изменил Глобальный ярлык для отказа от курения на VLC к «д» и установке 'm_process.write («Q»);' также не работает – tripleM

ответ

0

Я нашел решение, но мне это не особенно нравится, потому что он не использует Qt и зависит от os.

Я написал vbscript, который принимает процесс PID как аргумент.

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") 
Смежные вопросы