微信小程序> Qt获取所有进程、终止某个进程

Qt获取所有进程、终止某个进程

浏览量:2062 时间: 来源:风泥

Qt获取所有进程、终止某个进程

代码中用到Qt库的地方, 不使用Qt库的可以替换为自己相应的函数

方法一:

    //Qt开源库, 通过QProcess启动系统命令“tasklist.exe”, 获取正在运行的进程    QProcess process;    process.start("tasklist.exe");    if(process.waitForFinished())    {        QByteArray result = process.readAll();    }

方法二:

    //如果系统找不到Psapi.h    //需要安装microsoft sdk, https://www.microsoft.com/en-us/download/details.aspx?id=8279    #include <Psapi.h>    unsigned long aProcesses[1024], cbNeeded, cProcesses;    //枚举所有进程ID    if( !EnumProcesses(aProcesses,sizeof(aProcesses),&cbNeeded) )    {        qDebug()<<"text01"; //Qt开源库,输出字符串    }    QStringList lprocess;   //Qt开源库,字符串列表    //计算有多少个进程    cProcesses = cbNeeded / sizeof(unsigned long);    for(unsigned int i = 0; i < cProcesses; i++)    {        if(aProcesses[i] == 0)        {            continue;        }        //获取已存在的进程对象句柄        HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, aProcesses[i]);        wchar_t buffer[50];        GetModuleBaseName(hProcess, 0, buffer, 50); //获取进程名        CloseHandle(hProcess);        lprocess << QString::fromWCharArray(buffer); //Qt开源库    }    qDebug()<<lprocess; //Qt开源库

终止进程:

    int KillProcess(LPCSTR processName)    {        PROCESSENTRY32 pe;        DWORD id=0;        HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);        pe.dwSize = sizeof(PROCESSENTRY32);        if(!Process32First(hSnapshot,&pe))        {            return 0;        }        while(1)        {            pe.dwSize=sizeof(PROCESSENTRY32);            if(Process32Next(hSnapshot,&pe)==FALSE)            {                break;            }            //find processName            if(wcsicmp(pe.szExeFile, processName)==0)            {                id = pe.th32ProcessID;                break;            }        }        CloseHandle(hSnapshot);        //if(id == 0)        //  return ;        //Kill The Process        HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, id );        if (hProcess != NULL)        {            TerminateProcess(hProcess,0);            CloseHandle(hProcess);        }        return 1;    }

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎