Reputation: 5124
Is it possible in C# to determine which thread in another application that was opened by my process is the UI thread?
Upvotes: 4
Views: 1111
Reputation: 21917
@HansPassant has already answered it on MSDN forums:
using System.Diagnostics;
...
public static ProcessThread GetUIThread(Process proc) {
if (proc.MainWindowHandle == null) return null;
int id = GetWindowThreadProcessId(proc.MainWindowHandle, IntPtr.Zero);
foreach (ProcessThread pt in proc.Threads)
if (pt.Id == id) return pt;
return null;
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int GetWindowThreadProcessId(IntPtr hWnd, IntPtr procid);
Upvotes: 8