用CreateProcess启动MyEclipse,5秒后终止该进程。

IDE:VS2010

#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
using namespace std;bool killProcess(PROCESS_INFORMATION& processInfo){DWORD processId = processInfo.dwProcessId;PROCESSENTRY32 processEntry = {0};processEntry.dwSize = sizeof(PROCESSENTRY32);//给系统内的所有进程拍一个快照HANDLE handleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//遍历每个正在运行的进程if( Process32First(handleSnap, &processEntry) ){BOOL isContinue = TRUE;//终止子进程do{if( processEntry.th32ParentProcessID == processId ){HANDLE hChildProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processEntry.th32ProcessID);if( hChildProcess ){TerminateProcess(hChildProcess, 0);CloseHandle(hChildProcess);}}isContinue = Process32Next(handleSnap, &processEntry);}while( isContinue );HANDLE hBaseProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);if( hBaseProcess ){TerminateProcess(hBaseProcess, 0);CloseHandle(hBaseProcess);}}DWORD exitCode = 0;GetExitCodeProcess(processInfo.hProcess, &exitCode);cout<<"exitCode="<<exitCode<<endl;if( exitCode == STILL_ACTIVE ){return false;}return true;
}int main(){STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory( &pi, sizeof(pi) );ZeroMemory( &si, sizeof(si) );si.cb = sizeof(si);if( CreateProcess(NULL, "D:\\MyEclipse2014GA\\myeclipse.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi) ){Sleep(5000);cout<<killProcess(pi)<<endl;;}else{cout<<"创建失败!"<<endl;HANDLE hProcess = GetCurrentProcess();TerminateProcess(hProcess,0);}return 0;
}

CreateProcess TerminateProcess 创建与终止进程 demo相关推荐

  1. 进程控制(进程创建与终止 | 进程等待 | 程序替换)

    文章目录 一.进程创建 1. fork函数 2. fork创建进程 3. 写时拷贝 二.进程终止 1. 进程退出有三种情况 2. 常见进程终止方法 三.进程等待 背景(必要性) 1. 进程等待的方法 ...

  2. Linux系统调用:创建和终止进程

    1.进程的三种状态 1.运行.要么在被CPU执行,要么等待被执行且最终会被内核调度. 2.停止.执行被挂起且不会被调度.收到特定信号后才能继续运行. 3.终止.进程永远地停止了.可能的原因有三种:(1 ...

  3. Linux无法终止进程,如何在Linux中终止进程

    您是否曾经遇到过启动应用程序,而在使用该应用程序时突然变得无响应并意外崩溃的情况?您尝试再次启动该应用程序,但没有任何反应,因为原始应用程序进程从未真正完全关闭. 好吧,这件事发生在我们所有人身上,不 ...

  4. C/C++:Windows编程—创建进程、终止进程、枚举进程、枚举线程、枚举DLL

    创建进程的2种方式 1. 创建进程最简单的方法 UINT WINAPI WinExec(_In_ LPCSTR lpCmdLine, // 指向可执行文件_In_ UINT uCmdShow // 程 ...

  5. CreateProcess创建新的进程

    CreateProcess创建新的进程 标签:  attributes windows null security class 扩展 2010-03-16 10:37  3472人阅读  评论(0)  ...

  6. Linux进程的创建图文教程,进程的创建和终止(超详细)

    大多数系统的进程能够并发执行,它们可以动态创建和删除.因此,操作系统必须提供机制,用于创建进程和终止进程. 进程创建 进程在执行过程中可能创建多个新的进程.创建进程称为父进程,而新的进程称为子进程.每 ...

  7. VC进程的创建、终止

    众所周知,当用户在Windows操作系统中单击一个可执行文件时,系统就相当于产生了一个新进程.那么如何在一个程序产生一个新进程呢?Windows给广大程序员提供了很多的方法,一般来说,只需要调用一个A ...

  8. 进程和线程:进程的创建和终止

    进程的创建 进程创建的时机 系统初始化 一个进程执行了创建进程的系统调用 用户请求创建一个新进程 一个批处理作业初始化 进程分类 前台进程:和用户交互的进程. 守护进程:停留在后台处理的进程. (线程 ...

  9. CreateProcess创建一个隐藏进程

    delphi中使用CreateProcess创建一个隐藏进程 FillChar(StartUpInfo, SizeOf(StartUpInfo), 00); StartUpInfo.dwFlags : ...

最新文章

  1. 万字谈监控:解答Zabbix与Prometheus选型疑难
  2. Microbiome:微生物组研究中优化方法和规避误区
  3. 应用丨AI和机器学习如何改变美国政府决策方式
  4. docker客户端连接远程服务器
  5. 机器学习算法基础——朴素贝叶斯算法
  6. Ubuntu14.04 更新源 方法 提升更新的下载速度
  7. MFC创建及读写ini文件操作(转)
  8. saltstack(三) --- salt-httpapi
  9. java并发之synchronized实现原理及其优化
  10. java界面 文件选择器_掌握java技术 必备java工具应用知识
  11. TCP三次握手的序列号和确认号
  12. vm客户机隔离不能选_开汽车美容店,这些位置绝对不能选,会让你门可罗雀,生意惨淡...
  13. Dream------Hadoop--HDFS的设计
  14. date_range
  15. [Oracle] 日期处理
  16. tp交换机管理页面_TP-LINK交换机设置细节
  17. java手机牧场物语,Minecraft Java版 19w09a 发布
  18. 无障碍,root,adb如何隐藏,去除检测
  19. 北京邮电大学计算机学院考研夏令营,北京邮电大学计算机学院(专业学位)计算机技术保研夏令营...
  20. 你知道各调的特点吗?

热门文章

  1. 这款开源的人脸生成器,我爱了!
  2. vue 实现在线预览excel
  3. 不能为虚拟电脑**打开一个新任务 VT-x is disabled in the BIOS for all CPU
  4. 本文使用Imply套件安装,该套件提供了稳定的druid和web访问接口,在安装之前需要先安装node,
  5. PSP编程环境破解个人研究笔记——CYGWIN环境搭建
  6. HDU 7105 Power Sum
  7. java和ansys,HumanResourceManSys
  8. C++/数据库课程设计_诊所信息管理系统_系统介绍
  9. 如何看待yandex开源clickhouse这个列式文档数据库?
  10. 普林斯顿算法课作业的python实现(四)8 Puzzle