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
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: