我有一个过程,我想隐藏窗口。
如果这个过程只有一个窗口,它会很好用。
但是,如果有提示对话框或提示对话框或另一个子窗口,隐藏方法只隐藏主窗口,而不是对话框…
你能帮我隐藏一个过程的所有窗口吗?
非常感谢
这是我的代码:
[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()
枚举该线程的所有顶级窗口。 在这个过程中,有可能有与不同线程相关联的窗口,但其概率很小。