我们这根据名字查找进程,获取其ID

 1 /*@brief 获取找到的与指定进程名相符的第一个进程ID
 2 * @param [in]        cpszExeFileName        进程可执行文件名(不带路径)
 3 * @param [in/out]    dwPID                返回找到的名字符合的第一个进程ID
 4 * @return 成功 : S_OK    失败 : 错误码
 5 */
 6 HRESULT FindFirstProcessIdByName(const TCHAR* cpszExeFileName, DWORD &dwPID)
 7 {
 8     HRESULT hr = E_FAIL;
 9
10     PROCESSENTRY32 pe = { 0 };
11     HANDLE hSnapshot = NULL;
12
13     if (NULL == cpszExeFileName)
14     {
15         hr = HRESULT_FROM_WIN32(ERROR_BAD_ARGUMENTS);
16         goto Exit0;
17     }
18
19     pe.dwSize = sizeof(PROCESSENTRY32);//在使用这个结构前,先设置它的大小
20     //可以获取系统中正在运行的进程信息,线程信息,等
21     hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
22     //TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
23     //TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。    //TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
24     //第二个参数
25     //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0
26
27     if (INVALID_HANDLE_VALUE == hSnapshot)
28     {
29         hr = HRESULT_FROM_WIN32(GetLastError());
30         goto Exit0;
31     }
32
33     if (FALSE == Process32First(hSnapshot, &pe))
34     {
35         hr = HRESULT_FROM_WIN32(ERROR_NO_MORE_FILES);
36         goto Exit0;
37     }
38
39     hr = S_FALSE;
40     do
41     {
42         std::wcout << (std::wstring)pe.szExeFile << L",ID: " << pe.th32ProcessID << std::endl;;
43         if (0 == _tcscmp(cpszExeFileName, pe.szExeFile))
44         {
45             dwPID = pe.th32ProcessID;
46             hr = S_OK;
47             break;
48         }
49     } while (Process32Next(hSnapshot, &pe));
50
51 Exit0:
52     if (hSnapshot)
53     {
54         CloseHandle(hSnapshot);
55         hSnapshot = NULL;
56     }
57
58     return hr;
59 }

2.根据进程ID查找窗口句柄

typedef struct
{HWND    hwndWindow;     // 窗口句柄DWORD   dwProcessID;    // 进程ID
}EnumWindowsArg;// 枚举窗口回调函数
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{EnumWindowsArg *pArg = (EnumWindowsArg *)lParam;DWORD  dwProcessID = 0;// 通过窗口句柄取得进程ID::GetWindowThreadProcessId(hwnd, &dwProcessID);if (dwProcessID == pArg->dwProcessID){pArg->hwndWindow = hwnd;// 找到了返回FALSEreturn FALSE;}// 没找到,继续找,返回TRUEreturn TRUE;
}
HWND GetWindowHwndByPID(const DWORD dwProcessID)
{HWND hwndRet = NULL;EnumWindowsArg ewa;ewa.dwProcessID = dwProcessID;ewa.hwndWindow = NULL;EnumWindows(EnumWindowsProc, (LPARAM)&ewa);if (ewa.hwndWindow){hwndRet = ewa.hwndWindow;}return hwndRet;
}

转载于:https://www.cnblogs.com/xslwm/p/9465215.html

遍历系统中所有的进程,可根据名字或ID查找某一个线程相关推荐

  1. 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

    文章目录 一.Android 系统中调试器进程内存流程 二.编译内存调试动态库以及调试程序 三.博客资源 一.Android 系统中调试器进程内存流程 修改游戏运行中的内存 , 游戏运行之后 , 游戏 ...

  2. 16进制 ksh_AIX系统中如何统计进程打开的文件数目

    作者:李烨楠 中国建设银行 来自微信公众号:平台人生 环境: AIX 6.1 AIX7.1 前言: 用户有时需要统计一个进程打开的文件数目,比如,在当前打开文件句柄使用量是否超过用户资源限制(/etc ...

  3. Windows系统中常见的进程DOS操作命令

    Windows系统中常见的进程DOS操作命令 1. 查看指定端口的占用情况 语法: netstat -aon | findstr 端口号 例如:查看目前已经启动的nginx进程号 netstat -a ...

  4. linux查看pid对应的进程,linux系统中快速查看进程pid的方法

    linux系统中快速查看进程pid的方法 一个很简单的'命令,pgrep,可以迅速定位包含某个关键字的进程的pid:使用这个命令,再也不用ps aux 以后去对哪个进程的pid了 用法: pgrep ...

  5. .gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...

    今天来了解一下linux里面的一些小知识: (一)Linux系统中最大可以起多少个进程? (1)32位系统中最多可以起32768个进程 (2)64位系统中最多可以起2的22次方(4194304)约42 ...

  6. linux僵尸进程理解,聊聊Linux系统中的僵尸进程

    车祸现场 今天下午,笔者正在认真搬砖,日志集群中有一台机器忽然报init进程占用100% CPU.strace之,发现疯狂输出如下系统调用. ~ strace -p 1 rt_sigprocmask( ...

  7. C++ RasDial之调用RasEnumEntries遍历系统中存在的宽带连接名称

    代码执行效果如下图: 代码如下: #include <windows.h> #include <iostream> #include "ras.h" #in ...

  8. Linux系统中杀死僵尸进程的方法

    在linux系统管理中,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为defunct,这就是所谓的"僵尸"进程."僵尸"进程是一个早已 死亡的进程 ...

  9. wsappx关不掉_Win10系统中的wsappx进程什么?这个流程有什么作用什么?

    在Win10系统当中,wsappx进程占用了大量的CPU和磁盘资源,并且该进程是windows store和微软通用应用程序平台(uwp)的依赖进程.那么wsappx是什么进程呢?接下来小编就为大家详 ...

最新文章

  1. airflow sql_alchemy_conn mysql_airflow的安装和使用 - 完全版
  2. 人生苦短,我用Python——Life is short, You need Python
  3. h5调微信支付 unkonw url_聚合支付系统设计(一)
  4. 超全整理 | 嵌入式Linux 性能工具和诊断思路
  5. 从外网给新建的Exchange 2007/2010分发通讯组发邮件失败
  6. 使用ganglia监控hadoop
  7. [转载] Bitmap的秘密
  8. stringstream常见用法介绍
  9. 极验滑动验证码破解分析
  10. ASP 中用Ctrl+Enter提交表单
  11. win11u盘无法弹出怎么办?win11u盘老是被占用不能退出?
  12. Japanese Student Championship 2021
  13. Linux sleep exit abort函数
  14. WPF中Tooltip使用技巧总结
  15. [531]微信之wxpy库(基于itchat库)
  16. Android中读写权限申请
  17. 万能角度尺做仪器校准有哪些步骤?校准机构常见流程规范
  18. 【NOIP2013模拟】粉刷匠
  19. 《面筋:拿到美团点评和去哪儿网的offer》
  20. mysql取当天0点0分下一天0点0分_SQL获取当天0点0分0秒和23点59分59秒方法

热门文章

  1. 这交互炸了 - 收藏集 - 掘金
  2. [C#学习]多线程编程——多线程基础
  3. LinearLayout、RelativeLayout、FrameLayout居中显示
  4. 实现基于Spring框架应用的权限控制系统(转)
  5. jwebsocket
  6. FPGA优化之高扇出
  7. vivado的综合与实现策略怎样设置
  8. spring 定时器设置停止_单片机MSP430入门-理论⑦--定时器模块-定时器A②
  9. 时间序列预测实例(prophet的血泪史)
  10. 人眼是具有插帧能力的