C++通过进程获取进程名

2024-05-17 12:15:23 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,从PID 10948,我想获得的进程名火狐.exe在

我尝试过使用GetModuleFileNameExGetModuleFileNameGetProcessImageFileName、和{},所有这些都会产生一个垃圾字符串,比如:╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ 7Σ

我的代码:

DWORD* thread = new DWORD;
TCHAR szName[_MAX_FNAME];
HANDLE processhandle = OpenProcess(PROCESS_QUERY_INFORMATION, false, GetWindowThreadProcessId(GetForegroundWindow(), thread));
GetProcessImageFileName(processhandle, szName, _MAX_FNAME);
strrchr(szName, '\\');

最初,我尝试使用python,使用win32gui库,使用进程的句柄来执行此操作,但它无法找到命令提示符句柄。我不在乎我用哪种语言来解决识别当前正在使用的程序的问题,只要我能找到我可能使用的所有程序的名称。在


Tags: 程序进程句柄pidexethreadfnamemax
1条回答
网友
1楼 · 发布于 2024-05-17 12:15:23

OpenProcess()如果失败,则返回NULL。请致电GetLastError()找出原因。与GetProcessImageFileName()相同。在

另外,尝试使用PROCESS_QUERY_LIMITED_INFORMATION,因为它需要较少的权限。在

另外,您应该在填充szName缓冲区之前将其归零。在

另外,您不需要使用newGetWindowThreadProcessId()分配DWORD。在

试试这个:

DWORD threadid;
DWORD processid = GetWindowThreadProcessId(GetForegroundWindow(), &threadid);
HANDLE processhandle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, processid);
if (!processhandle) {
    // handle error as needed...
}
else {
    TCHAR szName[_MAX_FNAME] = {};
    if (!GetProcessImageFileName(processhandle, szName, _MAX_FNAME)) {
        // handle error as needed...
    }
    // ...
    CloseHandle(processhandle);
}

相关问题 更多 >