Qt应用程序如何监测另一个程序状态?(windows系统)
2017-02-22 16:33
323 查看
以前在做项目时有用过QProcess启动一个应用程序。 在按下按钮的槽函数中调用QProcess的start函数即可,非常的简单。但是这次不一样了,被调用的程序,并非我的程序启动的。我需要先
判断它是否已经启动了。那么如何判断呢?
查看帮助文档发现QProcess有个state()函数可以返回进程的状态。
QProcess::ProcessState
QProcess::state () const
Returns the current state of the process.
enum QProcess::ProcessState
This enum describes the different states of
QProcess.
可是我发现没办法获得这个进程, 因为这个程序不是由我启动的。只能想别的办法了,想想平时经常使用任务管理器关闭进程。那是不是只要查询管理器中有没有要启动的进程就可以了? 测试发现启动任务管理器也没用,无法获取进程列表,而且弹出一个任务管理器也不是我们想要的。
无奈只能求助万能的网友,认识了tasklist这东西,不仅可以查询进程还能杀死进程。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/08/ae69b6aff688fc066f7f4bbb1abe5be2)
那么如何使用呢?查看帮助 tasklist -FI "imagename eq xxx.exe" 这个命令可以显示进程名为xxx.exe的信息。
看看代码如何写:
QProcess* process = new QProcess;
process->start("tasklist" ,QStringList()<<"/FI"<<"imagename eq xxx.exe");
process->waitForFinished();
QString outputStr = QString::fromLocal8Bit(process->readAllStandardOutput());
最后通过输出的信息来判断是否已启动程序。如果没有启动则提示:
判断它是否已经启动了。那么如何判断呢?
查看帮助文档发现QProcess有个state()函数可以返回进程的状态。
QProcess::ProcessState
QProcess::state () const
Returns the current state of the process.
enum QProcess::ProcessState
This enum describes the different states of
QProcess.
Constant | Value | Description |
QProcess::NotRunning | 0 | The process is not running. |
QProcess::Starting | 1 | The process is starting, but the program has not yet been invoked. |
QProcess::Running | 2 | The process is running and is ready for reading and writing. |
无奈只能求助万能的网友,认识了tasklist这东西,不仅可以查询进程还能杀死进程。
那么如何使用呢?查看帮助 tasklist -FI "imagename eq xxx.exe" 这个命令可以显示进程名为xxx.exe的信息。
看看代码如何写:
QProcess* process = new QProcess;
process->start("tasklist" ,QStringList()<<"/FI"<<"imagename eq xxx.exe");
process->waitForFinished();
QString outputStr = QString::fromLocal8Bit(process->readAllStandardOutput());
最后通过输出的信息来判断是否已启动程序。如果没有启动则提示:
相关文章推荐
- 如何在一个程序中打开另一个应用程序
- 如何在一个程序中打开另一个应用程序
- 如何在一个程序中打开另一个应用程序
- 如何在一个程序中打开另一个应用程序
- 如何在一个程序中打开另一个应用程序
- JAVA 程序中如何拷贝一个目录下的文件及子目录到另一个目录,如何获取系统环境变量等...
- 如何在minicom下运行可键盘中断结束的qt-embedded程序
- 如何解决烦人的VS.NET2003编译时“无法将程序集复制到文件,另一个程序正在使用,进程无法访问”的问题?
- 如何在一个程序里面呼叫另一个程序
- vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?
- 请求帮助:如何解决烦人的VS.NET2003编译时“无法将程序集复制到文件,另一个程序正在使用,进程无法访问”的问题?
- 如何实现窗体跟随另一个程序一起显示,一起隐藏!!
- [C# FAQ]C#代码中如何启动另一个应用程序或批处理程序?
- 如何把应用程序程序和ORACLE客户端一起打包
- Linux操作系统下如何监测C程序的内存泄露
- 如何让自己的应用程序,控制台程序,windows 服务收到操作系统注销或者重启的消息
- 如何把应用程序程序和ORACLE客户端一起打包
- [转载]如何把应用程序程序和ORACLE客户端一起打包
- 多线程WIN32程序如何检查死锁(三)-使用Petri网络来表示多线程应用程序
- 如何在程序中获取系统ASP使用率等系统状态信息