// 启动进程
bool StartProgress(CString& strError)
{CString strExeName;strExeName.Format(_T("%s"), _T("test.exe"));CString strsCommandLine;  char chCommandLine[MAX_PATH];  DWORD dwExitCode;  PROCESS_INFORMATION pi;  STARTUPINFO     si;//用于指定新进程的主窗口特性的一个结构  memset(&si, 0, sizeof(si));  si.cb = sizeof(STARTUPINFO);  si.dwFlags = STARTF_USESHOWWINDOW;  si.wShowWindow = SW_SHOW;//SW_HIDE隐藏窗口  csCommandLine = strExeName;  ::strcpy(chCommandLine, csCommandLine);  CString strPath;strPath.Format(_T("%s\\"), GetAppPath());//启动进程  BOOL ret = CreateProcess(NULL, chCommandLine, NULL, NULL, FALSE, 0, NULL, strPath, &si, &pi);  if (ret)  {  //关闭子进程的主线程句柄  CloseHandle(pi.hThread);    //关闭子进程句柄  CloseHandle(pi.hProcess);return true;}else{DWORD dwErr = ::GetLastError();CString sInfo;sInfo.Format(_T("启动 %s 失败, 错误码: 0x%X"), csCommandLine, dwErr);strError = sInfo;}return false;
}
// 查询进程
bool IsExistProcess(const CString& szProcessName)
{PROCESSENTRY32 processEntry32;   HANDLE toolHelp32Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,  0);  if (((int)toolHelp32Snapshot) != -1)  {  processEntry32.dwSize = sizeof(processEntry32);  if (Process32First(toolHelp32Snapshot, &processEntry32))  {  do  {  if(strcmp(szProcessName ,processEntry32.szExeFile) == 0)  {  CloseHandle(toolHelp32Snapshot);  return true;  }  }while (Process32Next(toolHelp32Snapshot, &processEntry32));  }  CloseHandle(toolHelp32Snapshot);  }  return false;
}// 强制关闭进程
bool KillProcessByName(const TCHAR *lpszProcessName)
{unsigned int   pid = -1;  BOOL    retval = TRUE;  if (lpszProcessName == NULL)  return false;  DWORD dwRet = 0;  HANDLE hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS,0 );  PROCESSENTRY32 processInfo;  processInfo.dwSize = sizeof( PROCESSENTRY32 );  int flag = Process32First( hSnapshot, &processInfo );  // Find the process with name as same as lpszProcessName  while (flag != 0)  {  if (_tcscmp(processInfo.szExeFile, lpszProcessName) == 0) {  // Terminate the process.  pid = processInfo.th32ProcessID;  HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);  if (TerminateProcess(hProcess, 0) != TRUE){ // Failed to terminate it.  retval = FALSE;  break;  }  }  flag = Process32Next(hSnapshot, &processInfo);   } // while (flag != 0)  CloseHandle(hSnapshot);  if (pid == -1)  return FALSE;  return (retval != FALSE);
}

MFC关于进程使用:创建、关闭及查询进程相关推荐

  1. cidaemon.exe是什么进程及如何关闭cidaemon.exe进程

    问题描述:  这段时间机器总是出现一个奇怪的问题:cidaemon.exe进程占用CUP率98%以上,大大影响了电脑的正常使用.资源管理器中出现多个cidaemon.exe进程,强制结束占用cpu率最 ...

  2. linux下进程的创建代码,Linux下进程创建分析

    如何创建一个进程? 子进程拷贝父进程的代码和数据,进程拥有自己的独占资源(写时拷贝),父,子进程共享代码区,不共享数据区(私有化) 当使用pid_t fork(void)创建进程时,若创建成功,给父进 ...

  3. linux查看是否有某个运行的进程命令(不包括查询进程这条语句)

    转自:http://www.cnblogs.com/zdz8207/p/3760891.html linux查看是否有某个运行的进程命令:例如,查询是否包含 "my_post" 关 ...

  4. APUE学习笔记-守护进程的创建

    2019独角兽企业重金招聘Python工程师标准>>> #include "myapue.h" #include <syslog.h> #includ ...

  5. 守护进程的创建方法和步骤

    概念:      守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.Linux的大多数服务器就是用守护进 ...

  6. linux 进程(二) --- 进程的创建及相关api

    一.进程的创建fork()函数 由fork创建的新进程被称为子进程(child process).该函数被调用一次,但返回两次.两次返回的区别是子进程的返回值是0,而父进程的返回值则是 新子进程的进程 ...

  7. Linux系统编程之--守护进程的创建和详解【转】

    本文转载自:http://www.cnblogs.com/mickole/p/3188321.html 一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终 ...

  8. linux系统编程之进程(八):守护进程详解及创建,daemon()使用

    linux系统编程之进程(八):守护进程详解及创建,daemon()使用 一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等 ...

  9. java什么时候创建进程,Java创建进程

    Java创建进程 1 进程的概念 1 1.1 进程的概念 1 1.2 进程的特征 1 1.3 进程与线程区别 1 2 进程的创建 1 2.1 JAVA进程的创建 1 2.1.1 ProcessBuil ...

最新文章

  1. java可以用 lt =判断int吗_int 和 integer:装箱和拆箱的过程,会用到什么方法
  2. java 计时器归零_终止Java中的计时器
  3. 万能笔记本,你值得拥有;(XML)
  4. OpenGL 三角形的渲染
  5. SQL Server 2008使用LINQ进行数据访问(转载自IT168 [ http://www.it168.com/ ])
  6. python是脚本语言_上海python脚本语言课程
  7. k8s配置以使得pod可以运行于master上
  8. python2.7安装pyqt4及转换ui文件为py文件
  9. 《计算机应用基础》测试题,《计算机应用基础》测试题(一)
  10. JS高级程序设计第四版启航
  11. 世界三大统计分析软件sas splus spss
  12. 64位java没有javaw.exe,2019-01-01 eclipse无法找到javaw.exe怎么处理
  13. Can‘t update 分支名 has no tracked branch
  14. linux内核 超线程设置,linux – 为什么在启用超线程后性能会变差?
  15. 射频信号发生器的使用以及相关中心频率,载波,调制波术语解释
  16. HackTheBox::Sunday
  17. APS高级计划排程系统,工厂各部门实施前后有哪些区别?
  18. 微信小程序---手写签名(签字版)
  19. 日常运维工作的知识体系
  20. 高中数学40分怎么办_高二了数学40多分还有救吗?

热门文章

  1. linux 对比文件awk,Linux之awk工具、printf如何格式化输出?diff如何进行文件对比?...
  2. CrackMe007 | 难度适当提高 |160个CrackMe深度解析(图文+视频+注册机源码)
  3. strchr函数总结
  4. 最详细的Sigmoid函数的求导推导过程
  5. Hadoop作业调度
  6. 国科大学习资料--模式识别--2016-2017期末试卷及解析(刘成林)
  7. State详细代码和介绍-Topsis熵权法评分(含视频教程)、Stata灰色关联度分析
  8. 防爆定位信标与防爆定位基站有什么区别?
  9. 海尔微型计算机机箱如何拆解,海尔t628拆机详解
  10. 软件测试最终测试由谁执行,高效的测试执行力