C++ 从进程句柄获取进程信息

C++ 从进程句柄获取进程信息,c++,windows,C++,Windows,我需要获取外部进程的PROCESS\u信息,以便在我的应用程序中使用,我有进程句柄和进程ID,但我不知道如何从中获取PROCESS\u信息 我使用的是C++(11),Visual Studio 2012,运行在Windows上。任何帮助都将不胜感激。PROCESS\u信息由CreateProcess()填写。那艘船已经开航了;这个过程已经开始了 让我们专注于你真正想做的事情。要确定某个进程是否已终止,请首先使用OpenProcess()获取该进程的句柄。你需要PID,你已经有了。然后,WaitF

我需要获取外部进程的
PROCESS\u信息
,以便在我的应用程序中使用,我有进程句柄和进程ID,但我不知道如何从中获取
PROCESS\u信息


我使用的是C++(11),Visual Studio 2012,运行在Windows上。任何帮助都将不胜感激。

PROCESS\u信息由
CreateProcess()
填写。那艘船已经开航了;这个过程已经开始了


让我们专注于你真正想做的事情。要确定某个进程是否已终止,请首先使用
OpenProcess()
获取该进程的句柄。你需要PID,你已经有了。然后,
WaitForSingleObject()
将告诉您它是否已终止。传递要阻止的第二个参数的
INFINITE
,直到进程终止。如果要轮询,请通过
0
。最后,使用
CloseHandle()
进行清理。

可以通过获取所需的信息,因为它返回进程ID和父进程ID。可以找到它的使用示例。

进程信息提供了4条信息:

HANDLE hProcess
HANDLE hThread
DWORD dwProcessID
DWORD dwThreadID

你说你已经有了其中的两个值——进程句柄和进程ID。所以只剩下线程句柄和线程ID。它们属于为进程创建的第一个线程。您可以使用
CreateToolhelp32Snapshot()
Thread32First()
Thread32Next()
枚举正在运行的线程,以查找属于给定进程ID的线程ID,然后使用
OpenThread()
获取给定线程ID的线程句柄。棘手的部分是识别哪个线程ID是第一个线程。除了
CreateProcess()

之外,这些信息是不容易获得的。如果您已经有了流程句柄和id,为什么要使用这些信息?您实际需要哪些信息?根据您的说法,您已经拥有函数返回的50%的信息。唯一缺少的是初始线程的ID和句柄。为什么需要它?我需要它来检查启动应用程序的进程是否仍然处于活动状态,启动应用程序的应用程序(让我们称之为application1)在启动应用程序时传递其进程ID(让我们称之为application2)然后application2从进程ID派生句柄。-但是我不知道如何从那里获取
进程信息
。您打算如何使用
进程信息
来确定应用程序是否仍然处于活动状态?