Winapi 如何查找由win32 API编程中通过CreateProcess启动的程序创建的所有windows类?

Winapi 如何查找由win32 API编程中通过CreateProcess启动的程序创建的所有windows类?,winapi,createprocess,Winapi,Createprocess,我正在通过CreateProcess启动一个程序,这个程序创建了许多不同的windows类。例如,其中一个类称为Message\u Dispatch。另一个称为Main\u App\u Frame。还有几个 如何枚举属于CreateProcessAPI调用启动的进程的所有windows类?您不能。如果您需要从启动的流程中获取此信息,则必须在流程之间设置自定义接口来传递此信息。如果没有另一个进程的合作,您无法处理其他进程的类。您不能直接枚举已注册的窗口类,但可以通过FindWindow/Ex(),

我正在通过
CreateProcess
启动一个程序,这个程序创建了许多不同的windows类。例如,其中一个类称为
Message\u Dispatch
。另一个称为
Main\u App\u Frame
。还有几个


如何枚举属于
CreateProcess
API调用启动的进程的所有windows类?

您不能。如果您需要从启动的流程中获取此信息,则必须在流程之间设置自定义接口来传递此信息。如果没有另一个进程的合作,您无法处理其他进程的类。

您不能直接枚举已注册的窗口类,但可以通过
FindWindow/Ex()
EnumWindows()
EnumChildWindows()枚举在任何给定时刻运行的当前活动窗口
,等等。您可以使用
GetWindowThreadProcessId()
将每个窗口与
CreateProcess()
返回的进程ID进行比较,然后您可以对找到的每个匹配窗口使用
GetClassName()

如果您可以解释为什么需要这些信息,也许有人可以解决您的根本问题。你好,雷蒙德。谢谢你的回答。看起来您实际上可以通过枚举所有窗口,然后使用
GetWindowThreadProcessId()
将每个窗口与
CreateProcess()
返回的进程ID进行比较来间接地完成这项工作(请参见Remy的回答),然后您可以对找到的每个匹配窗口使用
GetClassName()
。你觉得这个怎么样?它看起来是有效的。这并没有枚举所有注册的类。仅枚举窗口当前正在使用的类。您没有看到已注册但尚未创建窗口的类。但是仍然不清楚为什么需要这些类,因为你不能用它们做任何事情。