我正在 Windows XP 上编写程序,试图获取 calc.exe 的进程句柄。我可以假设用户确实运行了 calc.exe,但他可能更改了文件名。
即使名称已更改,是否有一个名称可以获取 calc.exe 进程的句柄?
我找到了这个答案,但它不处理顽皮用户更改名称(例如更改为 calc_new.exe)的情况:
How can I get a process handle by its name in C++?
我可以使用 Win32 进程的一些其他属性来查找句柄吗?
最佳答案
您可以使用以下 Win32 API 调用序列执行此操作:
- 使用 Spy++ 或类似工具找到您定位的顶级窗口的类名。
- 调用
FindWindow
或EnumWindows
查找具有该类名的顶级窗口。 - 调用
GetWindowThreadProcessId
找到每个感兴趣的窗口的进程 ID。 - 调用
OpenProcess
传递进程 ID 以获取进程句柄。
关于c - 我怎样才能在 C 中获得一个进程句柄而不是它的名字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479944/