1

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

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

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

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

4

1 回答 1

1

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

[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

于 2014-01-20T17:46:53.627 回答