int CheckAppStatus()
{
QString app_name="V3.3.1";
QMessageBox *mbs = new QMessageBox();
mbs->hide();
mbs->setWindowFlags(Qt::Widget | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowStaysOnTopHint);
mbs->setStyleSheet("background-color: rgb(6, 60, 132);color: rgb(255, 255, 255);");
QFont font("微软雅黑");
font.setPointSize(12);
mbs->setFont(font);
mbs->setButtonText (QMessageBox::Ok,QString(" 确 定 "));
//表示如果在windows下
QProcess process;
int flg = 0;
int index = 0;
process.start("tasklist");//,QStringList()<<"/FI"<<"imagename eq " +app_name); //执行tasklist程序
process.waitForFinished(1000); //阻塞5秒等待tasklist程序执行完成,超过五秒则直接返回
QString outputStr = QString::fromLocal8Bit(process.readAllStandardOutput()); //把tasklist程序读取到的进程信息输出到字符串中
qDebug()<<outputStr<<app_name;
while(1)
{
index = outputStr.indexOf("V4.0.1", index);
if(index == -1)
break;
flg= flg +1;
index = index + 6;
}
process.close();
if(flg >1)
{
mbs->setText("程序已经打开");
mbs->setFocus();
mbs->exec();
CLogC_error("%s:This is erro: %s\n", __FUNCTION__,"程序已经打开");
}
return flg;
}
在main函数中调用上面的函数,当返回的值大于1时,说明已经有软件在运行了
int main(int argc, char *argv[])
{
if(CheckAppStatus() > 1)
{
a.quit();
return 0;
}
}