QT_獲取運行進程所在目錄路徑_2


QString getProcessFullPath(const quint64 &processId)
{
#ifdef Q_OS_WIN
    // access process path
    WCHAR name[1024];
    ZeroMemory(name, 1024);
    // open process handler
    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);
    if (NULL != hProcess)
    {
        DWORD cbNeeded;
        HMODULE hMod;
        // process path
        if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded))
        {
            DWORD dw = GetModuleFileNameExW(hProcess, hMod, name, 1024);
        }
        CloseHandle(hProcess);
    }
    return QString::fromWCharArray(name);
#elif defined Q_OS_MAC
#include <libproc.h>
    char pathbuf[1024];
    proc_pidpath(processId, pathbuf, sizeof(pathbuf));
    qDebug() << "running process path:     " << pathbuf;

//    //const char* strFind_ComName = convertQString2char("ps -ef|grep processName |grep -v grep |awk '{print $8}'");
//    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] == '\n'
//                && name[0] == '/')
//            {
//                name[nLen - 1] = '\0';
//                strPath = name;
//                break;
//            }
//        }
//        pclose(pPipe);
//    }
//     qDebug() << "----------------------------------------- check  processName  strPath " << strPath;

    QString strPath(pathbuf);
    return strPath;
#endif
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM