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(判断程序是否正在运行)的更多相关文章

  1. C#获取运行程序的进程ID

    C#获取运行程序的进程ID [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int G ...

  2. c#读取进程列表判断程序是否已经启动(转)

    方法一: using System.Diagnostics; Process[] vProcesses = Process.GetProcesses(); foreach (Process vProc ...

  3. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)

    本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...

  4. 显示所有APP的进程详细信息(进程ID、进程所在UID、进程占用内存、进程名)

    main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...

  5. java16 程序、进程、线程

    一.程序.进程.线程 .程序:程序就是我们编写的代码,也就是指令集,是一个静态概念. .进程:操作系统调度我们的程序,动态概念,一个程序就是一个进程.进程是程序的一次动态执行过程,占用特定的地址空间, ...

  6. C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)

    #region//开机自动运行        private void CB_Auto_CheckedChanged(object sender, EventArgs e)        {//CB_ ...

  7. Android 杀掉当前程序的进程

    在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码如下所示: android.os.Process.killProcess(android.os.Process.my ...

  8. 根据进程ID查找运行程序目录

    查看进程ID [root@hadoop03 openresty]# netstat -nltp 进入/proc目录查找相应进程ID目录并进入此目录 [root@hadoop03 usr]# cd /p ...

  9. Linux/UNIX编程:获取指定用户所有正在运行的进程ID和进程名

    先用系统函数 `getpwnam` 获得指定用户名的 UID,然后遍历 /proc/ 中所有 PID 目录,如果 /proc/PID/status 中的 UID 是输入用户名对应的 UID 则输出该 ...

随机推荐

  1. 从xmlns的作用说起

    查了资料和自己实践后,得出了一些关于xml和xmlns的结论 看一个最常见的javaweb 中xml配置文件的开头: <?xml version="1.0" encoding ...

  2. 报错initscripts conflicts with redhat-release-server-7.0-1.el7.x86_64

    报错 解决:删除冲突的rpm包即可 rpm -e redhat-release-server-7.0-1.el7.x86_64 --nodeps

  3. quatz调度-手动终止线程(2) Cleaner线程做清理工作

    import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import ja ...

  4. neo4j 实战、实例、示例 创建电影关系图 -1

    1. 创建关系 因为代码占篇幅太大,创建整个"电源关系图"的代码在文章最下方. 2. 简单分析创建语句 2.1 创建电影节点 CREATE (TheMatrix:Movie {ti ...

  5. wpf中在style的template寻找ControlTemplate和DataTemplate的控件

    一.WPF中的两棵树 WPF中每个控件的Template都是由ControlTemplate构成,ControlTemplate包含了构成该控件的各种子控件,这些子控件就构成了VisualTree:而 ...

  6. 23-css补充

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. ssm项目 maven 项目pon.xml 配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. 通过media媒体查询设置ie7/8样式、使用media判断各机型、手淘flexible.js

    @media all and (min-width:1280px){ /* 所有设备宽度大于1280干嘛干嘛嘞... */ body{ background:#f00; } } @media (min ...

  9. ajax传输数据

    AJAX向后台传输数//1 直接在url中传递 $.ajax({ type: "POST", url: "/testAjax/addUser?id=1&name= ...

  10. 装配SpringBean(六)--配置文件加载方式

    spring中的配置文件有两种: 以XML结尾的spring配置文件 以properties结尾的属性配置文件 在spring中有两种方式加载这两种文件: 通过注解+java配置的方式 通过XML的方 ...