QT实现获取进程信息

主要是通过QProcess实现cmd命令tasklist,然后再将得到的信息写到表上,但是表中英文显示居然会乱码,也是醉了

QProcess ps1;
    ps1.start("tasklist.exe");
    if(ps1.waitForFinished())
    {
        QByteArray result = ps1.readAll();
        QString ss(result);
                //qDebug() << ss;
        QStringList data = ss.split("\r\n");
        int j=0;
        for(QStringList::const_iterator i = data.begin();i!=data.end()-1;i++,j++)
        {
            if(j<3)continue;
           // qDebug()<<*i<<"   get";
            QString sdata = *i;
            QStringList ssdata = sdata.split("  ",QString::SkipEmptyParts);//分为一行一行的数据
            pinfo info;
            info.name = ssdata[0];
            //
            //qDebug()<<ssdata[1].trimmed();
            QString tran = ssdata[1].trimmed(); //消除空格
            QStringList tran2 = tran.split(" ");
            info.pid = tran2[0];
            info.huihuaname = tran2[1];
            //
            info.mem = ssdata[3];
            info.huihua = ssdata[2];
            //qDebug()<<info.name<<info.pid<<info.huihuaname<<info.huihua<<"   get";
            st.push_back(info);
        }
    }

具体代码到我的资源下载

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt中,可以使用QProcess进行子进程的创建和管理。然而,QProcess本身并不提供获取窗口句柄的功能。要获取进程的窗口句柄,可以借助一些底层操作系统的API。 首先,在Qt中启动子进程之后,可以使用QProcess的pid()函数获取进程进程ID。然后,可以使用操作系统相关的API来获取进程的窗口句柄。以下以Windows操作系统为例,介绍如何实现: 1. 使用QProcess启动子进程。 ``` QProcess process; process.start("your_executable_file"); ``` 2. 获取进程进程ID。 ``` qint64 pid = process.pid(); ``` 3. 使用Windows API函数EnumWindows()遍历所有顶级窗口,并查找与子进程进程ID对应的窗口。 ```cpp #include <windows.h> HWND childWindow = nullptr; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { DWORD pid; GetWindowThreadProcessId(hwnd, &pid); if (pid == static_cast<DWORD>(lParam)) { childWindow = hwnd; return FALSE; // 找到目标窗口后,终止遍历 } return TRUE; } EnumWindows(EnumWindowsProc, static_cast<LPARAM>(pid)); ``` 4. 最后,可以使用获取到的窗口句柄进行后续操作,例如设置窗口属性、发送消息等。 ```cpp // 设置窗口标题 QString title = "New Window Title"; SetWindowText(childWindow, title.toStdWString().c_str()); // 发送消息到子进程窗口 std::wstring message = L"Hello from Parent"; SendMessage(childWindow, WM_SETTEXT, 0, reinterpret_cast<LPARAM>(message.c_str())); ``` 需要注意的是,获取窗口句柄是操作系统相关的操作,不同平台可能有不同的实现方式。因此,上述代码只适用于Windows平台。在其他平台上,可能需要使用不同的API函数或方法来获取窗口句柄。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值