介绍

C++通过进程名获取PID
Windows IDE:Visual Studio 2022

Windows

引用库

      <iostream>
      <string>
      <Windows.h>
      <TlHelp32.h>

代码

DWORD GetProcessPidByName(std::wstring processName, int list = 1) {
	DWORD pid = 0;
	HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//创建进程快照
	if (processSnapshot != INVALID_HANDLE_VALUE) {//判断进程快照是否有效
		PROCESSENTRY32 processInfo{};
		processInfo.dwSize = sizeof(PROCESSENTRY32);
		int i = 1;
		if (Process32First(processSnapshot, &processInfo) == TRUE) {//获取第一个进程信息
			do {
				if (processName.compare(processInfo.szExeFile) == 0 && i == list) {//判断进程名是否找到
					pid = processInfo.th32ProcessID;
					i++;
				}
			} while (Process32Next(processSnapshot, &processInfo));//获取下一个进程信息
		}
	}
	return pid;
}