我需要在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?
提前感谢您的帮助!
答案 0 :(得分:1)
使用GetProcesses()返回的数组的每个Process对象的Id属性,您可以获取每个进程的ID。然后,通过ID,您可以通过OpenProcess API获取句柄。当你不再需要它时,请记得用CloseHandle关闭手柄。
请注意,不能使用Process对象的Handle属性,因为它仅适用于Process.Start返回的对象。
顺便提一下,请记住,对于新项目,您应该使用新的C ++ / CLI语言而不是旧的托管C ++扩展。