识别调试环境之外的 Delphi 应用程序中的线程



我找到了一个应用程序,它使用 wmi 查询(所有线程和每个线程的更多信息)请求进程信息。我修改了此应用程序以确定每个线程的 CPU 使用率。(如果我的应用程序名为"Appy",则线程名为"Appy/0"、"Appy/1",...)

我的问题:有没有办法在 IDE 或其他调试环境之外轻松识别这些线程?

我知道有NameThreadForDebugging方法,但在调试环境之外无法访问。

有没有办法在创建该线程时分配自己的线程 ID?或者,这是通过创建字典并将该字典写入文件以便外部可访问来了解谁是谁(线程)的唯一方法。

提前感谢!

不可以,您不能分配自己的线程 ID,线程 ID 由 CreateThread 函数分配给线程,并且在其生存期内无法更改。正如您所说,识别外部应用程序(不是调试器)中的线程的唯一方法是以某种方式与该应用程序共享线程标识。

但是,没有必要通过文件共享信息,例如,您可以使用共享内存块。它将比使用文件更有效。

作为关于线程 ID 的参考,您可以通过 GetCurrentThreadId 函数获取备注:

在线程终止之前,线程标识符唯一标识 整个系统中的线程。

最新更新