QT_获取正在运行程序的进程id(判断程序是否正在运行)
bool checkProcessRunning(const QString &processName, QList<quint64> &listProcessId)
{
#ifdef Q_OS_WIN
bool res = false;
HANDLE hToolHelp32Snapshot;
hToolHelp32Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
PROCESSENTRY32 pe = { sizeof(PROCESSENTRY32) };
BOOL isSuccess = Process32First(hToolHelp32Snapshot, &pe);
while (isSuccess)
{
size_t len = WideCharToMultiByte(CP_ACP, , pe.szExeFile, wcslen(pe.szExeFile), NULL, , NULL, NULL);
char *des = (char *)malloc(sizeof(char) * (len + ));
WideCharToMultiByte(CP_ACP, , pe.szExeFile, wcslen(pe.szExeFile), des, len, NULL, NULL);
des[len] = '\0';
if (!strcmp(des, processName.toStdString().c_str()))
{
listProcessId.append(pe.th32ProcessID);
res = true;
break;
}
free(des);
isSuccess = Process32Next(hToolHelp32Snapshot, &pe);
}
CloseHandle(hToolHelp32Snapshot);
return res;
#elif defined Q_OS_MAC
bool res(false);
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[] = { };
while (fgets(name, sizeof(name), pPipe) != NULL)
{
int nLen = strlen(name);
if (nLen >
&& name[nLen - ] == '\n')
//&& name[0] == '/')
{
name[nLen - ] = '\0';
listProcessId.append(atoi(name));
res = true;
break;
}
}
pclose(pPipe);
}
return res;
#endif
}
QT_获取正在运行程序的进程id(判断程序是否正在运行)的更多相关文章
- C#获取运行程序的进程ID
C#获取运行程序的进程ID [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int G ...
- c#读取进程列表判断程序是否已经启动(转)
方法一: using System.Diagnostics; Process[] vProcesses = Process.GetProcesses(); foreach (Process vProc ...
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...
- 显示所有APP的进程详细信息(进程ID、进程所在UID、进程占用内存、进程名)
main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...
- java16 程序、进程、线程
一.程序.进程.线程 .程序:程序就是我们编写的代码,也就是指令集,是一个静态概念. .进程:操作系统调度我们的程序,动态概念,一个程序就是一个进程.进程是程序的一次动态执行过程,占用特定的地址空间, ...
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)
#region//开机自动运行 private void CB_Auto_CheckedChanged(object sender, EventArgs e) {//CB_ ...
- Android 杀掉当前程序的进程
在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码如下所示: android.os.Process.killProcess(android.os.Process.my ...
- 根据进程ID查找运行程序目录
查看进程ID [root@hadoop03 openresty]# netstat -nltp 进入/proc目录查找相应进程ID目录并进入此目录 [root@hadoop03 usr]# cd /p ...
- Linux/UNIX编程:获取指定用户所有正在运行的进程ID和进程名
先用系统函数 `getpwnam` 获得指定用户名的 UID,然后遍历 /proc/ 中所有 PID 目录,如果 /proc/PID/status 中的 UID 是输入用户名对应的 UID 则输出该 ...
随机推荐
- 深入理解JVM(一)类加载器部分:双亲委派模型
类加载器的父亲委托机制 在父亲委托机制中,各个类加载器按照父子关系形成了树形结构,除了根类加载器之外,其余的类加载器都有且只有一个父加载器. 先让最顶层可以加在的父加载器加栽(所有可加载的加载器中,处 ...
- 实例测试java的Integer转String的效率问题1.8
原文链接:https://blog.csdn.net/chicaohun7473/article/details/100851373 查看String源码时,读到源码的toString方法时,打算探究 ...
- 我学习python没有记住的东西
格式化 # 格式化 a=123 b='ww' print("%d,%s,%%"%(a,b)) # %d,%s,%f,%c,%f 格式化代码:print('{}{}'.format( ...
- IntelliJ IDEA community 安装教程
jetbrains官网下载 IntelliJ IDEA安装包 https://www.jetbrains.com/idea/download/#section=windows 此处选择社区版的zip文 ...
- springcloud(十):Hystrix工作流程分析
通过Netflix Hystrix官方公布的流程图,我们来了解一下Hystrix的工作流程 1.创建HystrixCommand对象或者HystrixObservableCommand对象 首先创建一 ...
- 线性SVM分类器实战
1 概述 基础的理论知识参考线性SVM与Softmax分类器. 代码实现环境:python3 2 数据处理 2.1 加载数据集 将原始数据集放入"data/cifar10/"文件夹 ...
- Java超简明入门学习笔记(三)
Java编程思想第4版学习笔记(三) 第五章 初始化与清理(构造器和垃圾回收机制) Java有和C++类似的构造函数来为新创建的对象执行初始化及完成一些特殊的操作,有的类数据成员可能会 ...
- gulpfile.js demo
var config = require("./build.config") //获取build.config.js文件里的内容 var gulp = require(" ...
- webapp中<meta>与css代码部署
1.页面头部标签申明 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" id="te ...
- parameter–precharge, tRCD and tRAS
以下描述来自wikipeida : https://en.wikipedia.org/wiki/Synchronous_dynamic_random-access_memory 几点总结: (1) 每 ...