Process.GetCurrentProcess().MainWindowHandle返回零

jon*_*ham 5 .net c# windows process winforms

我正在尝试获取我的C#应用​​程序主窗体的窗口句柄(HWND)(该应用程序只有1个窗体).

互联网上的一些解决方案显示我可以使用:

Process.GetCurrentProcess().MainWindowHandle
Run Code Online (Sandbox Code Playgroud)

获取我的应用程序的当前进程的窗口句柄.但这个值总是零,什么都不对?

Lua*_*aan 6

MSDN 说:

主窗口是当前具有焦点的进程打开的窗口(TopLevel 窗体)。您必须使用 Refresh 方法刷新 Process 对象以获取当前主窗口句柄(如果它已更改)。

仅当进程具有图形界面时,进程才具有与其关联的主窗口。如果关联进程没有主窗口,则 MainWindowHandle 值为零。对于已隐藏的进程,即在任务栏中不可见的进程,该值也为零。对于在任务栏最右侧的通知区域中显示为图标的进程,可能就是这种情况。

请参阅http://msdn.microsoft.com/en-us/library/system.diagnostics.process.mainwindowhandle(v=vs.110).aspx