从进程句柄获取进程信息
Getting Process Information from Process Handle
我需要在我的应用程序中使用外部进程的PROCESS_INFORMATION
,我有进程句柄和进程ID,但我不知道如何从中获得PROCESS_INFORMATION
。
我使用c++ (11), Visual Studio 2012,在Windows上运行。
PROCESS_INFORMATION
由CreateProcess()
填充。船已启航;进程已启动
让我们关注你真正想做的事情。要了解进程是否已经终止,首先使用OpenProcess()
获取该进程的句柄。你需要PID,你已经有了。然后WaitForSingleObject()
将告诉您它是否被终止。为第二个参数传递INFINITE
以阻塞直到进程终止。如果你想投票,通过0
。最后,使用CloseHandle()
进行清理。
PROCESS_INFORMMATION
提供4条信息:
HANDLE hProcess
HANDLE hThread
DWORD dwProcessID
DWORD dwThreadID
你说你已经有了其中的两个值——进程句柄和进程ID。那只剩下线程句柄和线程ID。它们属于为进程创建的第一个线程。您可以使用CreateToolhelp32Snapshot()
、Thread32First()
和Thread32Next()
枚举正在运行的线程,查找属于给定进程ID的线程ID,然后使用OpenThread()
获取给定线程ID的线程句柄。棘手的部分是确定哪个线程ID是第一个线程。这些信息在CreateProcess()
之外是不容易获得的。
您需要的信息可以通过CreateToolhelp32Snapshot函数获得,因为它同时返回进程ID和父进程ID。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 获取进程内存信息失败,错误 6 句柄无效
- 如何将我的 cli 信息(变量等)共享到子进程,这是一个 bash shell 脚本
- 如何在 Windows 进程回调中断开连接时获取设备信息(硬件 ID)
- 如何使用在窗口中使用C++从CreateToolhelp32Snapshot获取64/32位进程详细信息和进程信息
- 在进程外使用MiniDumpWriteDump时,如何获取异常信息
- 如何在C++中以编程方式检索 64 位进程的详细信息
- 在 C++ 和 Ruby 中的进程之间交换信息
- 获取进程句柄的详细信息
- 可以单独调用两个 CreateProcess() 共享相同的启动和进程信息
- 如何将进程信息转换为WTS_PROCESS_INFO
- 从内存进程中获取信息
- 向远程进程注入DLL并显示信息
- c++ -进程信息
- 如何在Xcode的c++命令行应用程序中获取进程信息
- 如何从子进程获取状态信息以度量资源利用率
- 从进程句柄获取进程信息
- 在 Darwin/OSX 中以编程方式确定进程信息