4

私のプロセスによって開かれた別のアプリケーションのどのスレッドが UI スレッドであるかを C# で判断することは可能ですか?

4

1 に答える 1

8

@HansPassant は、MSDN フォーラムで既に回答しています。

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);
于 2013-01-01T13:21:00.193 に答える