如何检测线程是否有窗口句柄?
如何以编程方式检测线程是否具有给定进程的窗口句柄?
py++ 为我提供了这些信息,但我需要以编程方式执行此操作。
我需要在 C# 中执行此操作,但是 .net 诊断库没有为我提供此信息。我想象spy++正在使用一些我不知道的Windows api调用。
我可以访问我正在尝试调试的系统的代码。我想嵌入一些由计时器定期调用的代码,该代码将检测有多少线程包含窗口句柄并记录此信息。
谢谢
How can I programmatically detect if a thread has windows handles on it for a given process?
spy++ gives me this information but I need to do it programmatically.
I need to do this in C#, however the .net diagnostics libs don't give me this information. I imagine spy++ is using some windows api call that I don't know about.
I have access to the code of the system I'm trying to debug. I want to embed some code called by a timer periodically that will detect how many thread contain windows handles and log this info.
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信你可以使用win api函数: EnumWindowsProc 迭代窗口句柄和 GetWindowThreadProcessId 来获取与给定窗口句柄关联的线程 id 和进程 id
请检查下面的示例是否适合您:
此代码使用 System.Diagnostics 迭代进程和线程;对于每个线程 ID,我调用 GetWindowHandlesForThread 函数(参见下面的代码)
GetWindowHandlesForThread 实现:
上面代码的结果应该转储到控制台中,如下所示:
I believe you can use win api functions: EnumWindowsProc to iterate through window handles and GetWindowThreadProcessId to get the thread id and process id associated with given window handle
Please check if an example below would work for you:
this code iterates through processes and threads using System.Diagnostics; for each thread ID I'm calling GetWindowHandlesForThread function (see code below)
GetWindowHandlesForThread implementation:
result of the code above should dump into console smth like this: