【发布时间】:2018-12-02 23:53:09
【问题描述】:
例如从 PID 10948 我想获取 firefox.exe 的进程名
我尝试过使用GetModuleFileNameEx、GetModuleFileName、GetProcessImageFileName 和GetModuleBaseName,所有这些都会导致垃圾字符串,例如:╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠ 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 库使用进程的句柄来执行此操作,它有效,但它无法找到命令提示符句柄。我不在乎使用哪种语言来解决识别当前正在使用的程序的问题,只要我能够找到我可能使用的所有程序的名称即可。
【问题讨论】:
-
我将从检查函数调用中的错误开始。如果第一次调用失败,第二次就没有用了。
-
这行得通,所以我猜 OpenProcess 失败了。 ideone.com/O0GW65
-
如何检查 OpenProcess 是否失败?
标签: python c++ winapi process win32gui