豹子头林不冲

激光马仔

博客园 首页 新随笔 联系 订阅 管理

简介:最近主加工软件存在端口被占用的情况,每次查的麻烦,就写了小东西

image

 

image

 

QString MainWindow::getPortProcessInfo(quint16 port)
 {
     QProcess process;

     // 使用 netstat 命令查找特定端口
     process.start("netstat", QStringList()
                  << "-ano"
                  << "-p" << "TCP");

     if (!process.waitForFinished(3000)) {
         return QString::fromLocal8Bit("无法执行netstat命令");
     }

     QString output = QString::fromLocal8Bit(process.readAllStandardOutput());
     QStringList lines = output.split("\n");

     // 查找包含端口号的行
     QString pattern = QString(":%1 ").arg(port);
     for (const QString &line : lines) {
         if (line.contains(pattern) && line.contains("LISTENING")) {
             return line.trimmed();
         }
     }

     return QString::fromLocal8Bit("端口未找到");
 }
QString getProcessNameById(qint64 pid)
{
    QProcess process;
    process.start("tasklist", QStringList()
                 << "/FO" << "CSV"
                 << "/NH"
                 << "/FI" << QString("PID eq %1").arg(pid));

    if (process.waitForFinished(2000)) {
        QString output = QString::fromLocal8Bit(process.readAllStandardOutput());
        if (!output.isEmpty()) {
            // CSV格式: "进程名","PID","会话名","会话#","内存使用"
            QStringList parts = output.split("\",\"");
            if (parts.size() >= 1) {
                QString name = parts[0];
                if (name.startsWith('"')) {
                    name = name.mid(1);
                }
                return name;
            }
        }
    }

    return QString::fromLocal8Bit("未知进程");
}

 

posted on 2025-12-22 10:46  代码的无意义  阅读(4)  评论(0)    收藏  举报