• 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
    }
  • 相关阅读:
    java垃圾回收机制
    浮点数比较/运算BigDecimal
    java8新特性_::双冒号
    java的lambda表达式
    【转】DelphiXE10.2.3——跨平台生成验证码图片
    ide fix pack for delph 10.2.3发布了
    使用ALVideoPlayerSurface制作视频播放器
    kbmMWLog同时输出日志到多个日志管理器
    kbmMWLog输出日志到控制台或指定Grid
    推荐内置android控件的开源项目alcinoe
  • 原文地址:https://www.cnblogs.com/amwuau/p/9776795.html
Copyright © 2020-2023  润新知