我很好奇--如何才能在C++上按名称或PID列表获取可执行文件的PID?我参考了这些文档:
在编译和运行此代码时,进程in都是十六进制格式的。是否有一种方法来代替获得PID的整数值?
例如,是否有一种方法可以获得值:
10200而不是
0x000027D8是否必须实际转换十六进制值,还是有一种方法可以提取整数等效值?
发布于 2020-01-07 07:47:58
GetProcessId函数
检索指定进程的进程标识符。
阅读更多这里
代码示例(注DWORD定义 DWORD是一个32位的无符号整数 ):
DWORD MyGetProcessId(LPCTSTR ProcessName) // non-conflicting function name
{
PROCESSENTRY32 pt;
HANDLE hsnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pt.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hsnap, &pt)) { // must call this first
do {
if (!lstrcmpi(pt.szExeFile, ProcessName)) {
CloseHandle(hsnap);
return pt.th32ProcessID;
}
} while (Process32Next(hsnap, &pt));
}
CloseHandle(hsnap); // close handle on failure
return 0;
}
int main()
{
DWORD pid = MyGetProcessId(TEXT("calc.exe"));
std::cout << pid;
if (pid == 0) { printf("error 1"); getchar(); }//error
return 0;
}发布于 2020-01-07 07:59:41
PID本身已经是整数。MSDN代码以十六进制格式输出PID。只需在以下2行中将0x%08X更改为%u,以输出十进制格式的PID:
_tprintf( TEXT("\n Process ID = %u"), pe32.th32ProcessID );
...
_tprintf( TEXT("\n Parent process ID = %u"), pe32.th32ParentProcessID );https://stackoverflow.com/questions/59624195
复制相似问题