如何获取包含我的应用程序创建的所有线程的列表
我想从我的应用程序中获取包含所有线程(除了主 GUI 线程)的列表,以便对它们执行一些操作。 (设置优先级、终止、暂停等) 怎么做呢?
I want to get a list with all the threads (except the main, GUI thread) from within my application in order to do some action(s) with them. (set priority, kill, pause etc.)
How to do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
另一种选择是使用 CreateToolhelp32Snapshot,< a href="http://msdn.microsoft.com/en-us/library/ms686728%28VS.85%29.aspx" rel="nofollow noreferrer">Thread32First 和 Thread32Next 函数。
请参阅这个非常简单的示例(在 Delphi 7 和 Windows 7 中测试)。
Another option is use the CreateToolhelp32Snapshot,Thread32First and Thread32Next functions.
See this very simple example (Tested in Delphi 7 and Windows 7).
您可以使用我的 TProcessInfo 类:
You can use my TProcessInfo class:
您还可以查看 http://blog.delphi-jedi.net/2008/03/19/how-to-get-the-threads-of-a-process/
You can also have a look at http://blog.delphi-jedi.net/2008/03/19/how-to-get-the-threads-of-a-process/
您可以使用 WMI 访问此信息。
WIN32_Process 可以为您提供有关机器上执行的进程的所有信息。对于每个进程,您可以提供 ThreadsCount、Handle...
另一个类,WIN32_Thread 可以为您提供有关机器上运行的所有线程的详细信息。该类有一个名为 ProcessId 的属性,用于搜索 1 个进程的特定线程(WIN32_Process 类)。
为了测试它,您可以在命令行窗口上执行此操作:
类似,您可以使用进程句柄对 WIN32_Thread 执行此操作。
请原谅我的英语不好。
问候。
You can access this information using WMI.
The WIN32_Process can give you all information about process executing on Machine. For each process you can give ThreadsCount, Handle,...
Another class, WIN32_Thread can give you detailled information about all Threads running on Machine. This class hace a property called ProcessId for search especific threads for 1 process (class WIN32_Process).
For test it you can execute this on CommandLine window:
Similar you can do with WIN32_Thread using the Handle of process.
Excuse.me for my bad english.
Regards.
如果它们是您的线程,那么我将创建一个应用程序全局线程管理器以在创建时注册它们自己。然后,您可以使用线程管理器正确地监视、暂停和关闭线程。
If they are your threads, then I would create an application global Thread Manager to register themselves with upon creation. Then you can properly monitor, pause and shutdown threads gracefully using your Thread Manager.