我需要列出当前进程中所有打开的句柄。 因为我找不到像“EnumHandles”这样的函数,所以我正在考虑将循环从0改为1000.问题是我如何检索每个句柄的名称? 我使用c + +和操作系统是Win7的32位 编辑: 我需要的名称是一个互斥体。 通过比较互斥的名字,我想把手ID 我似乎使用OpenMutex已经找到解决办法,但我不知道怎么传第三个参数,获取当前进程中所有句柄的名称
回答
我相信你必须使用NTDLL.DLL。据我所知,这是所有工具监视进程,句柄和其他系统信息,最终必须在Windows下使用。我用它在一个小的Win32工具,但是从来不必列出句柄。
在这里检查一个很好的介绍该图书馆,并与您的问题。 http://forum.sysinternals.com/howto-enumerate-handles_topic18892.html
另外在http://forum.sysinternals.com/enumerate-opened-files_topic3577.html
的第一篇文章的GetObjectName函数访问这种在Windows中的信息似乎是一个大量的工作,看起来可怕,因为微软并不希望支持它,但你会看到当'easy'API没有给你你需要的东西时,你必须挖掘到NTDLL。这就是ProcessExplorer最终使用的工具。使用起来并不难:加载DLL,使用正确的函数指针来填充你自己声明的结构,并使用网上找到的结构。
我不是指导进程,它是位于当前进程中的句柄 – WePro2 2012-01-03 22:22:59
我严重地解释了它。 NTDLL.DLL库用于获取有关深层系统信息(进程,句柄等)的信息。这是一个未经Microsoft记录的DLL,但您可以在我提供的链接或通过Google搜索找到文档。你只需要知道在DLL中调用的结构和函数。 – fury 2012-01-03 22:32:58
只是为了检索手柄的名称,它看起来很多工作。我认为OpenMutex可能是我正在寻找的答案,但我不确定是否需要传递互斥体(\ Sessions \ 1 \ BaseNamedObjects \ somemutex)的完整路径,或者只是在第三个参数上传递somemutex。我尝试了两种方法,但没有取得成功 – WePro2 2012-01-03 22:44:25
- 1. 如何获取Windows中当前进程的所有子进程的句柄?
- 2. 通过图像名称获取进程的进程句柄
- 3. 按进程名称获取进程句柄
- 4. 获取所有窗口句柄和给定进程名称的相应标签句柄
- 5. 通过窗口句柄获取未知进程的名称?
- 6. 获取VB.NET中PID进程的所有子窗口的句柄
- 7. 从pid或句柄获取进程名称
- 8. 如何获取当前BrowserWindow的句柄
- 9. Win32API - 如何从进程句柄获取进程的文件名?
- 10. 是否有可能通过进程名称获得WINAPI进程句柄,而无需遍历所有进程
- 11. 通过名称获取控制句柄
- 12. 获取进程主线程的句柄
- 13. Python Selenium获取当前窗口句柄
- 14. 获取当前课程的名称?
- 15. 在Windows DLL中,如何获取当前进程已打开的文件句柄?
- 16. 获取进程表格的句柄c#
- 17. 获取窗口的所有句柄
- 18. 获取使用其图像名称的过程的句柄
- 19. 获取当前正在执行的存储过程的句柄
- 20. 如何获取当前C程序的父窗口的句柄?
- 21. 获取当前MembershipProvider名称
- 22. 获取独占进程句柄
- 23. 通过PID获取进程句柄
- 24. 从浏览器进程获取句柄
- 25. 如何确定进程句柄是否是当前进程?
- 26. 在当前进程中获取JavaVM *的所有实例?
- 27. 如何获取所有线程ID和进程的名称
- 28. 如何获得所有进程的打开句柄集
- 29. 如何获取当前所有者名称?
- 30. 获取鼠标当前在VB.net中的窗体句柄
你是什么意思的“每个句柄的名称”?手柄没有名字。你的意思是句柄ID,相应的窗口类或文本标题? – 2012-01-03 22:04:28
并非所有句柄都引用具有名称的文件。你有没有考虑过看Process Explorer? – 2012-01-03 22:05:04
该方法不起作用。什么样的手柄? – SLaks 2012-01-03 22:05:25