123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #include "mainwindow.h"
- #include <QApplication>
- #include <QFileDialog>
- #include <QSettings>
- #include <windows.h>
- #include <QDebug>
- #include <Tlhelp32.h>
- #include <cstdlib>
- #include <QDateTime>
- #include <QTextStream>
- #include <stdlib.h>
- #include <QProcess>
- #include <string.h>
- using namespace std;
- #define KEY_EXE_PATH "ALARM_PATH"
- BOOL IsExistProcess(const char* szProcessName)
- {
- PROCESSENTRY32 processEntry32;
- HANDLE toolHelp32Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
- if (((int)toolHelp32Snapshot) != -1)
- {
- processEntry32.dwSize = sizeof(processEntry32);
- if (Process32First(toolHelp32Snapshot, &processEntry32))
- {
- do
- {
- size_t i;
- int iLen = 2 * wcslen(processEntry32.szExeFile);
- char* chRtn = new char[iLen + 1];
- //转换成功返回为非负值
- wcstombs_s(&i,chRtn,iLen + 1, processEntry32.szExeFile, iLen + 1);
- if (strcmp(szProcessName, chRtn) == 0)
- {
- return TRUE;
- }
- } while (Process32Next(toolHelp32Snapshot, &processEntry32));
- }
- CloseHandle(toolHelp32Snapshot);
- }
- //
- return FALSE;
- }
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- MainWindow w;
- w.show();
- QSettings sets("sys.ini", QSettings::IniFormat);
- QString exeAbsPath = sets.value(KEY_EXE_PATH).toString();
- if ("" == exeAbsPath) {
- QString exepath = QFileDialog::getOpenFileName(0, "选择程序", "D:/zyj/QT/build-ProcessTest-Desktop_Qt_5_12_8_MSVC2017_32bit-Debug/debug", "Exe files (ProcessTest.exe)");
- qDebug() << exepath;
- if ("" != exepath) {
- sets.setValue(KEY_EXE_PATH, exepath);
- }
- } else {
- // 检测程序是否还在运行
- while (1) {
- QString loginfo;
- QFile file("restart_alarm_recored.txt");
- exeAbsPath = sets.value(KEY_EXE_PATH).toString();
- QString exeName = exeAbsPath.split('/').last();
- if(!IsExistProcess(exeName.toStdString().c_str())){
- loginfo += QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
- loginfo += "|";
- loginfo += exeName;
- loginfo += "|";
- loginfo += "restart\n";
- file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append);
- QTextStream out(&file);
- out << loginfo;
- file.close();
- //开启进程
- //system("start /b uugw04040003.exe");
- system(exeAbsPath.toStdString().c_str());
- }else{
- }
- }
- // 关闭状态重启
- }
- return a.exec();
- }
|