如何为所有系统进程获取GetGuiResources?

时间:2010-03-22 17:08:16

标签: c++ winapi gdi managed-c++

我需要在Windows xp系统中测量所有使用过的GDI对象。我找到了一个GetGuiResources(__ in HANDLE hProcess,__ in DWORD uiFlags)方法(带有GR_GDIOBJECTS标志)。我将它称为从WinBase.h中定义的GetCurrentProcess()方法获得的进程。

我不知道如何为其他系统进程调用它,我通过System :: Diagnostics :: Process :: GetProcesses()得到它,因为该函数返回一个Process指针数组,GetGuiResources带一个HANDLE。

有人知道解决方案吗?如何将Process指针转换为Handle或为所有正在运行的系统进程获取HANDLE?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用GetProcesses()返回的数组的每个Process对象的Id属性,您可以获取每个进程的ID。然后,通过ID,您可以通过OpenProcess API获取句柄。当你不再需要它时,请记得用CloseHandle关闭手柄。

请注意,不能使用Process对象的Handle属性,因为它仅适用于Process.Start返回的对象。

顺便提一下,请记住,对于新项目,您应该使用新的C ++ / CLI语言而不是旧的托管C ++扩展。