Qt如何打开和结束外部程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt如何打开和结束外部程序相关的知识,希望对你有一定的参考价值。
按一个按钮就打开外部程序(最好不要是记事本),再按另外一个按钮就直接关闭这个程序。求代码~
参考技术A 可以查查操作系统的api,有这种api能实现运行一个新的进程运行其他程序!然后记住pid,当你想关闭的时候这个pid发送信号!那个进程收到信号以后,结束自己就可以了!追问能详细一点么,新手不好意思啊,有没有代码参考下?
参考技术B 用QProcess类应该可以实现的。追答可以打开了,可是怎么强制关闭这个外部程序呢?
方法1 得看外部程序支不支持了m_process->write("stop\n");方法2,杀进程!!!
追问怎么杀进程?close?kill?
追答怎么杀?
本回答被提问者采纳 参考技术C QProcess打开,用QProcess.write向外部程序发送退出信号追问有代码参考么新手不好意思。。
参考技术D 看到这种贴,进来看看,指不定有收获Qt启用外部程序和关闭外部程序
在我们的多方合做的项目中,经常会遇到需要调用第三方外部程序。在Qt中提供了QProcess类,可以用来启动和关闭外部程序,并与之通讯。QProcess继承于QIODevice,因此,我们可以把它当作是一个I/O设备进行读写操作。
具体用法:
1.一体式启动:外部程序启动后,将随着主程序的退出而退出
启动方法:
void QProcess::start(const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite)
2.分离式启动:外部程序先启动,启动后再启动外部程序,主程序退出时,该程序继续运行。
启动方法:
void QProcess::startDetached(const QString & program, const QStringList & arguments, const QString & workingDirectory = QString(), qint64 * pid = 0)
3.实际调用:
process->start("D:/mypro/data/Rose.exe");
QProcess::start()和QProcess::execute()都能完成启动外部程序的任务,但是区别很大,start()是非阻塞的,而execute()是阻塞的。execute()=start()+waitforFinished()。
以上是关于Qt如何打开和结束外部程序的主要内容,如果未能解决你的问题,请参考以下文章
Qt打开外部程序和文件夹需要注意的细节(注意QProcess的空格问题,以及打开本地文件时,需要QUrl::fromLocalFile才可以)