win32进程名查找进程PID
1.
#include <Psapi.h>
#pragma comment(lib, "Psapi.lib")
DWORD GetProcIDFromName(LPCTSTR lpName)
{
DWORD aProcId[], dwProcCnt, dwModCnt;
HMODULE hMod;
TCHAR szPath[MAX_PATH]; //枚举出所有进程ID
if (!EnumProcesses(aProcId, sizeof(aProcId), &dwProcCnt)){
//cout << "EnumProcesses error: " << GetLastError() << endl;
return ;
} //遍例所有进程
for (DWORD i = ; i < dwProcCnt; ++i)
{
//打开进程,如果没有权限打开则跳过
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, aProcId[i]);
if (NULL != hProc)
{
//打开进程的第1个Module,并检查其名称是否与目标相符
if (EnumProcessModules(hProc, &hMod, sizeof(hMod), &dwModCnt))
{
GetModuleBaseName(hProc, hMod, szPath, MAX_PATH);
if ( == lstrcmpi(szPath, lpName))
{
CloseHandle(hProc);
return aProcId[i];
}
}
CloseHandle(hProc);
}
}
return ;
}
2.
#include <Tlhelp32.h>
BOOL GetProcessIdByName(LPCTSTR lpszProcessName, PDWORD pdwProcessId)
{
*pdwProcessId = ;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
if (hSnapshot == INVALID_HANDLE_VALUE)
{
return FALSE;
} PROCESSENTRY32 pe;
pe.dwSize = sizeof pe; if (Process32First(hSnapshot, &pe))
{
do {
if (lstrcmpi(lpszProcessName, pe.szExeFile) == )
{
CloseHandle(hSnapshot);
*pdwProcessId = pe.th32ProcessID;
return TRUE;
}
} while(Process32Next(hSnapshot, &pe));
} CloseHandle(hSnapshot);
return FALSE;
}
独立调用此函数时会返回空,在IDE下却可以,这就需要提权了,提权参考Win32 OpenProcess打开进程失败,返回5无权限操作
win32进程名查找进程PID的更多相关文章
- Python 使用标准库根据进程名获取进程PID
应用场景 在进行 Linux 运维的环境中,我们经常会遇到维护同一台服务器上的多个程序,涉及到程序的启动.关闭和重启操作. 通常这些程序之间存在着相互依存的关系需要进行依次的启动关闭操作. 下面介绍几 ...
- Linux用ps命令查找进程PID再用kill命令终止进程的方法
使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即 ...
- linux查找进程pid并杀掉
命令:ps aux | grep `pwd` | grep -v grep | awk '{print $2}' | xargs kill -9 详细解释[我的有道云笔记,不知道为什么没法直接复制到 ...
- Bash Shell 获取进程 PID
转载地址:http://weyo.me/pages/techs/linux-get-pid/ 导读 Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运 ...
- linux命令(26):Bash Shell 获取进程 PID
转载地址:http://weyo.me/pages/techs/linux-get-pid/ 根据pid,kill该进程:http://www.cnblogs.com/lovychen/p/54113 ...
- 014-交互式Shell和shell脚本获取进程 pid
Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...
- windows中根据进程PID查找进程对象过程深入分析
这里windows和Linxu系列的PID 管理方式有所不同,windows中进程的PID和句柄没有本质区别,根据句柄索引对象和根据PID或者TID查找进程或者线程的步骤也是一样的. 句柄是针对进 ...
- WINDOWS API ——CREATETOOLHELP32SNAPSHOT——查找进程
原文:http://www.cnblogs.com/wind-net/archive/2012/10/26/2741458.html //根据进程名获取进程ID DWORD GetPidByProce ...
- C++ 实现 查找进程, 杀死进程, 启动进程, 进程重启
头文件: #include <Windows.h>#include <tlhelp32.h>#include <tchar.h>#include <Shell ...
随机推荐
- 网站底部版权信息区(bootstrap)
bootstrap的强大功能毋庸置疑.所以,网站底部版权信息区可以用bootstrap的“栅格系统”完成. 下面是一个未经处理的底部版权信息区的样式: <div class="cont ...
- CSS垂直居中
一.单行文本垂直居中: 设置其文本的行高line-height与其父容器高度相等即可.如 <style> .test{ background-color: grey; line-heigh ...
- sed 命令
使用sed操作: .个人博客的文件,只输出学生姓名 .txt .txt .只输出每个学生的url .txt .只输出个人博客里的学号 .txt .只输出个人博客中,两个字姓名的学生名 .txt .只输 ...
- javascript学习笔记之array.sort
arrayName.sort()方法: 功能是实现排序(按ascii编码或按数字大小),可无参或有参使用,无参时默认升序排列.有参时可实现升序或降序排列,参数必须是具有返回值的方法,当方法表达式大于0 ...
- hdu 1241 Oil Deposits
#include<cstdio> #include<iostream> #include<algorithm> #include<math.h> #in ...
- XML 特殊字符
XML转义字符 以下为XML标志符的数字和字符串转义符 " (" 或 ") ' (' 或 ') & (& 或 & ...
- [LeetCode] Find the Difference
Given two strings s and t which consist of only lowercase letters. String t is generated by random s ...
- CPT单臂路由
路由器配置:Router>enableRouter#configure terminal 进入全局配置模式Router(config)#int fa0/1 进入端口R ...
- ROS学习(二)—— 配置ROS环境
一.管理环境 p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 如果你在查找和使用ROS软件包方面遇到了问题,请确保你已经正确配置了脚 ...
- MIT 6.828 JOS学习笔记17. Lab 3.1 Part A User Environments
Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行.你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息:创建 ...