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才可以)

qt 如何打开一个别人的工程?

C#程序嵌入Word窗口

QT按钮如何打开本地视频

如何从 Qt 中的应用程序关闭已经打开的浏览器

如何在记事本和记事本++等外部应用程序中打开vba表单