获取进程的主窗口,如果不可见.Net / powershell

时间:2014-01-20 16:31:16

标签: .net powershell process mainwindow

我在powershell控制台中测试以下命令:

get-process thunderbird |% { $_.MainWindowHandle }

当窗口可见时,它返回一个值,但是当我隐藏它时(实际上,使用插件从样式中删除WS_VISIBLE),它返回0.。

据我了解,这只是.Net System.Diagnostics.Process.MainWindowHandle行为。所以,问题是:.Net / powershell中最简单的方法是获取进程的主窗口句柄,如果它不可见?

1 个答案:

答案 0 :(得分:1)

这会有帮助吗?它需要使用P / Invoke.NET。如果窗口被隐藏,那么使用互操作/本机代码可能是唯一的方法。

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

http://social.msdn.microsoft.com/Forums/vstudio/en-US/1d7bd916-9bbe-4c76-b9a0-8306159035a1/faq-item-how-to-retrieve-a-window-handle-in-visual-cnet?forum=csharpgeneral