场景:

1.有时候需要调用外部程序,但是外部程序有可能崩溃挂起,这样这个进程就没法结束,所以再在下次调用前需要先结束之前调用的。

2.没考虑到权限问题,应该是只能终止当前用户启动的进程.

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <windows.h>
  4. #include <Tlhelp32.h>
  5. #include <vector>
  6. void TerminateProcessByName(PCWSTR name)
  7. {
  8. DWORD pid = 0;
  9. // Create toolhelp snapshot.
  10. HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  11. PROCESSENTRY32W process;
  12. ZeroMemory(&process, sizeof(process));
  13. process.dwSize = sizeof(process);
  14. std::vector<DWORD> pids;
  15. // Walkthrough all processes.
  16. if (Process32FirstW(snapshot, &process))
  17. {
  18. do
  19. {
  20. // Compare process.szExeFile based on format of name, i.e., trim file path
  21. // trim .exe if necessary, etc.
  22. if (!wcscmp(process.szExeFile, name))
  23. {
  24. pid = process.th32ProcessID;
  25. pids.push_back(pid);
  26. }
  27. } while (Process32NextW(snapshot, &process));
  28. }
  29. CloseHandle(snapshot);
  30. size_t size = pids.size();
  31. for(size_t i = 0; i < size; ++i)
  32. {
  33. HANDLE one_process = OpenProcess(PROCESS_TERMINATE, FALSE, pids[i]);
  34. BOOL res = TerminateProcess(one_process,0);
  35. if(res)
  36. {
  37. WaitForSingleObject(one_process,1000);
  38. }
  39. }
  40. }
  41. int main(int argc, char *argv[])
  42. {
  43. printf("Hello, world\n");
  44. std::vector<DWORD> pids;
  45. TerminateProcessByName(L"notepad.exe");
  46. return 0;
  47. }

WIN32 根据程序名(映像名称)终止外部程序的更多相关文章

  1. killall 根据名称终止进程

    根据名称终止进程 killall [option] name-list killall 将信号发送到一个或多个进程用来终止它.除超级用户外,只有进程的所有者才可以对进程执行killall,超级用户可以 ...

  2. 关于cmd下使用taskkill无法终止进程名包含空格的进程的解决方案

    在我们使用taskkill命令终止进程时,有时会遇到无法终止含空格的进程的问题.只要在进程名外部加上双引号即可解决此问题. 如图所示: 附上taskkill命令的语法及相关说明: TASKKILL [ ...

  3. DOS命令行(5)——Windows系统的配置与管理(下)

    whoami --查看当前有效用户 这个工具可以用来获取本地系统上当前用户(访问令牌)的用户名和组信息,以及相应的安全标识符(SID).声明.本地系统上当前用户的权限.登录标识符(登录 ID).例如, ...

  4. windows7命令帮助大全

    有关某个命令的详细信息,请键入 HELP 命令名ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库 ...

  5. DOS命令详解

    DOS命令详解 命令 \? 可以进入命令帮助 1.md命令创建目录. MKDIR [drive:]pathMD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MKD ...

  6. windows命令——taskkill

    C:\Users\Administrator>taskkill /? TASKKILL [/S system [/U username [/P [password]]]] { [/FI filt ...

  7. DOS常用命令收集(长期更新)

    命令列表 命令 说明 ASSOC 显示或修改文件扩展名关联. ATTRIB 显示或更改文件属性. BREAK 设置或清除扩展式 CTRL+C 检查. BCDEDIT 设置启动数据库中的属性以控制启动加 ...

  8. Windows-007-进程相关命令(netstat、tasklist、taskkill、tskill)实战实例图文详解

    本节主要讲述 Windows 系统下,nestat.tasklist.tskill 三个 CMD 命令的参数,及使用方法:以及如何利用三者结合查看进程信息和结束进程.敬请亲们参阅,希望能对亲们有所帮助 ...

  9. Tasklist and TaskKill

    C:\Users\Administrator>tasklist /? TASKLIST [/S system [/U username [/P [password]]]]         [/M ...

随机推荐

  1. [BZOJ 3531] [Sdoi2014] 旅行 【离线+LCT】

    题目链接:BZOJ - 3531 题目分析 题目询问一条路径上的信息时,每次询问有某种特定的文化的点. 每个点的文化就相当于一种颜色,每次询问一条路径上某种颜色的点的信息. 可以使用离线算法, 类似于 ...

  2. Android Environment 判断sd卡是否挂载 获取sd卡目录

    在将一个文件存储到sd卡上面的时候,一般需要判断sd是否已经挂载才进行操作. 那么如何判断sd卡已经挂载呢? 我们可以使用Android的Environment类,具体使用如下: if(Environ ...

  3. VisualStudio替换所有空行

    [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3371620.html] Ctrl+Shift+H 查找内容\r\n\r\n   //如果要替换 ...

  4. 李洪强iOS开发Swift篇---12_NSThread线程相关简单说明

    李洪强iOS开发Swift篇---12_NSThread线程相关简单说明 一 说明 1)关于多线程部分的理论知识和OC实现,在之前的博文中已经写明,所以这里不再说明. 2)该文仅仅简单讲解NSThre ...

  5. 使用SparseArray代替HashMap

    HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performanc ...

  6. Exception Handling Statements (C# Reference)

    Exception Handling Statements (C# Reference) C# provides built-in support for handling anomalous sit ...

  7. index 辨别字符在字符串中的位置

    namespace index{    class Program    {        static void Main(string[] args)        {            wh ...

  8. Unable to Rebuild JIRA Index

    Symptoms Accessing certain JIRA pages result in: SEVERE: Internal server error com.atlassian.jira.is ...

  9. 【转】iOS Provisioning Profile(Certificate)与Code Signing详解 -- 待看

    原文网址:http://blog.sina.com.cn/s/blog_82c8198f0102vy4j.html 引言 关于开发证书配置(Certificates & Identifiers ...

  10. 【转】android-support-v7-appcompat.jar 的安装及相关问题解决 --- 汇总整理

    原文网址:http://tdppro.blog.51cto.com/749956/1388853 1.DownLoading the Support Libraries 1)Start the And ...