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
}
复制代码

 

posted @   风来风往风伤(TiAmo)  阅读(1964)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示