qt通过进程ID获取进程路径

5 篇文章 1 订阅

Qt没有直接获取进程路径的函数,但可以通过操作系统提供的接口来实现。以下是Windows和Linux平台下获取进程路径的示例代码:

在Windows平台下:

```cpp

#include <windows.h>
#include <tlhelp32.h>

QString getProcessPath(DWORD processId)
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE) {
        return "";
    }

    PROCESSENTRY32 pe;
    pe.dwSize = sizeof(PROCESSENTRY32);

    if (!Process32First(hSnapshot, &pe)) {
        CloseHandle(hSnapshot);
        return "";
    }

    QString path;

    do {
        if (pe.th32ProcessID == processId) {
            path = QString::fromWCharArray(pe.szExeFile);
            break;
        }
    } while (Process32Next(hSnapshot, &pe));

    CloseHandle(hSnapshot);

    return path;
}


```
在Linux平台下:

```cpp

#include <unistd.h>
#include <sys/stat.h>

QString getProcessPath(pid_t pid)
{
   char exePath[1024];
   snprintf(exePath, sizeof(exePath), "/proc/%d/exe", pid);

   char realPath[PATH_MAX + 1];
   ssize_t len = readlink(exePath, realPath, PATH_MAX);

   if (len != -1) {
       realPath[len] = '\0';
       return QString::fromUtf8(realPath);
   }

   return "";
}


```

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值