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 则输出该 ...
随机推荐
- [原创]Java调用PageOffice在线打开数据库中保存的Word文件
PageOffice产品和数据库是两个独立的概念,严格来说两者之间没有任何本质关系.PageOffice不依赖数据库而存在,但是数据库和PageOffice可以结合使用来完成某些复杂的业务逻辑.例如: ...
- mysql 乐观判断 校验
说下场景, 用户账户 有 100 元钱, 他执行了两个操作, A操作发红包发了80块钱, B操作 发红包 发了 70 ,并发, 假如没有 冻结这一说法, 两个操作都是去 查询余额, 还有100 ...
- Python学习day25-面向对象之组合,多态和封装
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- sqlserver2005分页存储过程
Create proc [dbo].[sp_AbiTableLoad] ---------------------------------------------- -- 单表多表分页存储过程 -- ...
- vue-admin-template模板添加tagsview
参考: https://github.com/PanJiaChen/vue-admin-template/issues/349 一.从vue-element-admin复制文件: vue-admin- ...
- linux-c getopt()参数处理函数
转自:https://www.cnblogs.com/qingergege/p/5914218.html 最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴. 好了,虽然啰嗦了点 ...
- 同一服务器不同域名session共享
Tomcat下,不同的二级域名之间或根域与子域之间,Session默认是不共享的,因为Cookie名称为JSESSIONID的Cookie根域是默认是没设置 的,访问不同的二级域名,其Cookie就重 ...
- boost 日期时间计算
示例代码如下: #include <boost/date_time/gregorian/gregorian.hpp> #include <boost/date_time/posix_ ...
- webpack 打包生成的index 路径引用不对
webpack 在打包时在访问打包里面的index时,出现路径错误 修改方法为 解决方法:在config下面的index.js把 assetsPublicPath: '/', 修改为: assetsP ...
- Java实现数字大写转换
需求如下:用json读取后台工时信息,比如23.5小时,需要通过编码将其转换为贰拾叁点伍 比如23.23之前有对Stringl类型强转为Double在转为整型,发生了精度丢失,后来想想对小数点进行分割 ...