遍历系统中所有的进程,可根据名字或ID查找某一个线程
我们这根据名字查找进程,获取其ID
/*@brief 获取找到的与指定进程名相符的第一个进程ID
* @param [in] cpszExeFileName 进程可执行文件名(不带路径)
* @param [in/out] dwPID 返回找到的名字符合的第一个进程ID
* @return 成功 : S_OK 失败 : 错误码
*/
HRESULT FindFirstProcessIdByName(const TCHAR* cpszExeFileName, DWORD &dwPID)
{
HRESULT hr = E_FAIL; PROCESSENTRY32 pe = { };
HANDLE hSnapshot = NULL; if (NULL == cpszExeFileName)
{
hr = HRESULT_FROM_WIN32(ERROR_BAD_ARGUMENTS);
goto Exit0;
} pe.dwSize = sizeof(PROCESSENTRY32);//在使用这个结构前,先设置它的大小
//可以获取系统中正在运行的进程信息,线程信息,等
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
//TH32CS_SNAPPROCESS - 在快照中包含系统中所有的进程。
//TH32CS_SNAPTHREAD - 在快照中包含系统中所有的线程。
//TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
//第二个参数
//一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0 if (INVALID_HANDLE_VALUE == hSnapshot)
{
hr = HRESULT_FROM_WIN32(GetLastError());
goto Exit0;
} if (FALSE == Process32First(hSnapshot, &pe))
{
hr = HRESULT_FROM_WIN32(ERROR_NO_MORE_FILES);
goto Exit0;
} hr = S_FALSE;
do
{
std::wcout << (std::wstring)pe.szExeFile << L",ID: " << pe.th32ProcessID << std::endl;;
if ( == _tcscmp(cpszExeFileName, pe.szExeFile))
{
dwPID = pe.th32ProcessID;
hr = S_OK;
break;
}
} while (Process32Next(hSnapshot, &pe)); Exit0:
if (hSnapshot)
{
CloseHandle(hSnapshot);
hSnapshot = NULL;
} return hr;
}
2.根据进程ID查找窗口句柄
typedef struct
{
HWND hwndWindow; // 窗口句柄
DWORD dwProcessID; // 进程ID
}EnumWindowsArg; // 枚举窗口回调函数
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
EnumWindowsArg *pArg = (EnumWindowsArg *)lParam;
DWORD dwProcessID = ;
// 通过窗口句柄取得进程ID
::GetWindowThreadProcessId(hwnd, &dwProcessID);
if (dwProcessID == pArg->dwProcessID)
{
pArg->hwndWindow = hwnd;
// 找到了返回FALSE
return FALSE;
}
// 没找到,继续找,返回TRUE
return 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;
}
遍历系统中所有的进程,可根据名字或ID查找某一个线程的更多相关文章
- Linux查看系统中的每个进程
Linux查看系统中的每个进程 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ps -A PID TTY TIME CMD 1 ? 00:00:01 init ...
- 脚本_查找 Linux 系统中的僵尸进程
#!bin/bash#功能:查找Linux系统中的僵尸进程#作者:liusingbon#使用awk判断ps命令输出的第8列为Z时,显示该进程的 PID 和进程命令ps aux |awk '{if($8 ...
- 浅谈Linux系统中如何查看进程
进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源.一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份拷贝. 1,ps命令 作用:p ...
- 浅谈Linux系统中如何查看进程 ——ps,pstree,top,w,全解
进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源.一般来说,Linux系统会在进程之间共享程序代码和系统函数库,所以在任何时刻内存中都只有代码的一份拷贝. 1,ps命令 作用:p ...
- 使用python显示当前系统中的所有进程并关闭某一进程
环境: Windows 10操作系统 python idle 原理: 调用windows系统自带的命令task,该命令使用方式: 第一步.调用cmd命令行,显示当前系统中所有进程: Win+R-> ...
- 041_查找 Linux 系统中的僵尸进程
#!/bin/bash#awk 判断 ps 命令输出的第 8 列为 Z 是僵尸进程,显示该进程的 PID 和进程命令 ps aux |awk '{if($8 == "Z"){pri ...
- linux系统中运行node进程,无法杀死进程
events.js:72 throw er; // Unhandled 'error' event ^Error: listen EADDRINUSE at errnoException (net.j ...
- 获取系统中所有进程&线程信息
读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...
- 怎样查看lInux系统中的所有运行进程
可以使用ps命令.它能显示当前运行中进程的相关信息,包括进程的PID.Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息. ps命令能提供一份当前进程的快照.如果想状态可以自动刷新,可以 ...
随机推荐
- pepperoni-app-kit
 哭唧唧,在g ...
- page-break-after:always不能正常工作
https://stackoverflow.com/questions/9595412/ie7-ie8-page-break-afteralways-not-working 最近在打印网页的时候发现 ...
- ubuntu vim01
不小心按了ctrl+s(停止向终端输入),解决办法ctrl+q(恢复向终端输入)
- NOIP 提高组 2014 联合权值(图论???)
传送门 https://www.cnblogs.com/violet-acmer/p/9937201.html 题解: 相关变量解释: int n; int fa[maxn];//fa[i] : i的 ...
- 计算机基础:计算机网络-chapter2
因为计算机网络是的传输从物理到数据端的过程到端是自下而上的,所以大多数的教材都是从五层协议结构的底部开始向上延申. 物理层: = = 好复杂哦.看不懂,反正就是讲一些通信的线,信号传输的实现原理,和信 ...
- vnc连接虚拟机中的CentOS7系统
1.CentOS7 core安装gnome桌面 安装Gnome包# yum groupinstall "GNOME Desktop" "Graphical Adminis ...
- codeforces794D dfs+图上hash
http://codeforces.com/problemset/problem/794/D 题意:在一个国家有 n 座城市和一些双向边.这些城市被编号为 1 到 n. 一共有 m 条双线边,第 i条 ...
- 2017-12-15python全栈9期第二天第七节之数字转换成布尔值
#!/user/bin/python# -*- coding:utf-8 -*-print(bool(2))
- ADC触摸屏
目录 ADC触摸屏 硬件原理 等效电路 测量逻辑 程序设计(一)获得ADC 寄存器初始化 中断初始化 ADC模式(中断.测量) 中断函数 程序设计(二)获得坐标 生产者与消费者 ADC获取 程序优化 ...
- axis 入门【原】
Call call = (Call) service.createCall();call.setOperationName(new QName("命名空间地址", "方法 ...