• 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] == '
    '
    //                && name[0] == '/')
    //            {
    //                name[nLen - 1] = '';
    //                strPath = name;
    //                break;
    //            }
    //        }
    //        pclose(pPipe);
    //    }
    //     qDebug() << "----------------------------------------- check  processName  strPath " << strPath;
    
        QString strPath(pathbuf);
        return strPath;
    #endif
    }
  • 相关阅读:
    简单讲解Asp.Net Core自带IOC容器ServiceCollection
    C#配置文件configSections详解
    学习Linq之前必须知道的几种语法糖
    学习Linq之前必须要了解的扩展方法
    学习学习学习学习!!!!!!!!!!!!
    SpringBoot自动配置原理
    OAuth2
    微服务搭建学习笔记(一) 认证中心搭建
    Vue 学习记录
    Vue实例(1)
  • 原文地址:https://www.cnblogs.com/amwuau/p/9776795.html
Copyright © 2020-2023  润新知