过期罐头电脑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2775|回复: 0
收起左侧

如何删除Windows系统中无用的服务

[复制链接]
zeldazhao 2012-6-21 14:55:50 | 显示全部楼层
 在最近做的一个项目中需要. 用到检测进程状态的功能,在网上兜了半圈,普遍介绍的方法有三种:
  1. 是应用 GetExitCodeProcess(pi.hProcess,&dwExitCode);通过看dwExitCode返回值是不是STILL_ACTIVE,仍然 活动,说明存在;
  2 .waitforsingleobject,通过超时来判别 ,具体的实现方法可以去网上查,
  3. openprocess,通过返回值来判别 ,假如 返回值为NULL则表示进程已经打开,否则没有打开。
  上面3个方法他人 都说行,也有人说有局限性,就拿openprocess来说吧,自己. 在测试是发现线程关掉了但是返回值还是NULL,郁闷啊~~,没方法 只能用最土的方法 来解决这个问题,
  4. load系统的进程表,看进程id是不是匹配,匹配则表示正在运行,否则就已经挂了,代码如下:
  #include
  //假如 有运行,返回进程的true,没运行返回false
  bool ProcessExist(DWORD process_id)
  {
  PROCESSENTRY32 pe;
  DWORD id = 0;
  HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  pe.dwSize = sizeof(PROCESSENTRY32);
  if( !Process32First(hSnapshot,&pe) )
  {
  CloseHandle(hSnapshot);
  return false;
  }
  while(1)
  {
  pe.dwSize = sizeof(PROCESSENTRY32);
  if( Process32Next(hSnapshot,&pe)==FALSE )
  {
  CloseHandle(hSnapshot);
  return false;
  }
  if(process_id == pe.th32ProcessID)
  {
  CloseHandle(hSnapshot);
  return true;
  }
  }
  }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

一键重装系统|雨人系统下载|联系我们|网站地图|过期罐头电脑论坛

GMT+8, 2024-11-5 18:53 , Processed in 0.038473 second(s), 26 queries .

官方免责声明:本站内容来自网友和互联网.若侵犯到您的版权.请致信联系,我们将第一时间删除相关内容!

Powered by Discuz!

专注于win7_win10_win11系统下载装机

© 2010-2023 GQGTPC.Com

快速回复 返回顶部 返回列表