zoukankan      html  css  js  c++  java
  • QT_获取正在运行程序的进程id(判断程序是否正在运行)

    bool checkProcessRunning(const QString &processName, QList<quint64> &listProcessId)
    {
    #ifdef Q_OS_WIN
        bool res = false;
        HANDLE    hToolHelp32Snapshot;
        hToolHelp32Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
        PROCESSENTRY32    pe = { sizeof(PROCESSENTRY32) };
        BOOL  isSuccess = Process32First(hToolHelp32Snapshot, &pe);
        while (isSuccess)
        {
            size_t len = WideCharToMultiByte(CP_ACP, 0, pe.szExeFile, wcslen(pe.szExeFile), NULL, 0, NULL, NULL);
            char *des = (char *)malloc(sizeof(char) * (len + 1));
            WideCharToMultiByte(CP_ACP, 0, pe.szExeFile, wcslen(pe.szExeFile), des, len, NULL, NULL);
            des[len] = '';
            if (!strcmp(des, processName.toStdString().c_str()))
            {
                listProcessId.append(pe.th32ProcessID);
                res = true;
                break;
            }
            free(des);
            isSuccess = Process32Next(hToolHelp32Snapshot, &pe);
        }
        CloseHandle(hToolHelp32Snapshot);
        return res;
    #elif defined Q_OS_MAC
        bool res(false);
        QString strCommand = "ps -ef|grep " + processName + " |grep -v grep |awk '{print $2}'";
    
        const char* strFind_ComName = convertQString2char(strCommand);
        FILE * pPipe = popen(strFind_ComName, "r");
        if (pPipe)
        {
            std::string com;
            char name[512] = { 0 };
            while (fgets(name, sizeof(name), pPipe) != NULL)
            {
                int nLen = strlen(name);
                if (nLen > 0
                    && name[nLen - 1] == '
    ')
                    //&& name[0] == '/')
                {
                    name[nLen - 1] = '';
                    listProcessId.append(atoi(name));
                    res = true;
                    break;
                }
            }
            pclose(pPipe);
        }
        return res;
    #endif
    }
  • 相关阅读:
    Java修饰符
    java中接口的定义
    抽象类
    final关键字的特点
    hdu6489 2018 黑龙江省大学生程序设计竞赛j题
    POJ 3268 (dijkstra变形)
    poj 2253 floyd最短路
    poj1681 Network
    bzoj1202 狡猾的商人
    Nastya Is Buying Lunch
  • 原文地址:https://www.cnblogs.com/amwuau/p/9776820.html
Copyright © 2011-2022 走看看