一尘不染

如何使用.NET枚举属于特定进程的所有窗口?

c#

我如何使用c#查找由特定进程创建的所有窗口?

更新

我需要使用应用程序的PID(进程ID)枚举属于特定进程的所有窗口。


阅读 232

收藏
2020-05-19

共1个答案

一尘不染

使用Win32 API EnumWindows(如果需要子窗口EnumChildWindows),或者可以使用EnumThreadWindows

[DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool EnumWindows(EnumThreadWindowsCallback callback, IntPtr extraData);

然后通过使用Win32 API GetWindowThreadProcessId检查每个窗口属于哪个进程

[DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern int GetWindowThreadProcessId(HandleRef handle, out int processId);
2020-05-19