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
}

 

转载于:https://www.cnblogs.com/amwuau/p/9776795.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值