按进程隐藏多个窗口

我有一个过程,我想隐藏窗口

如果这个过程只有一个窗口,它会很好用。

但是,如果有提示对话框或提示对话框或另一个子窗口,隐藏方法只隐藏主窗口,而不是对话框…

你能帮我隐藏一个过程的所有窗口吗?

非常感谢

这是我的代码:

[DllImport("user32.dll")] private static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow); public void Show() { ShowWindow(_processHwnd, SwShow); } public void Hide() { Process[] processRunning = Process.GetProcesses(); foreach (Process pr in processRunning) { if (pr.Id == _process.Id) { _processHwnd = pr.MainWindowHandle; } } ShowWindow(_processHwnd, SwHide); } 

您需要通过P / invoke使用更多的Win32 API来获取其他顶级窗口的窗口句柄。

  • 调用GetWindowThreadProcessId()来获取主窗口的线程ID。
  • 调用EnumThreadWindows()枚举该线程的所有顶级窗口。

在这个过程中,有可能有与不同线程相关联的窗口,但其概率很小。