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
    }
  • 相关阅读:
    HDU 1828 Picture
    HDU 2656 Counting Game
    HDU 3265 Posters
    Android颜色选择器之案例解析
    实现半透明的popupwindow的源码
    用activity实现半透明的、淡入的menu【原创】
    Android webservice的用法详细讲解
    Android Fragments 详细使用详细介绍
    在Android中扫描wifi热点演示实例教程
    用Dialog创建带箭头的对话框
  • 原文地址:https://www.cnblogs.com/amwuau/p/9776820.html
Copyright © 2011-2022 走看看