Process.GetCurrentProcess().MainWindowHandle returns zero



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

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

Process.GetCurrentProcess().MainWindowHandle

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

MSDN说:

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

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

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

在属性[F4]窗口中"在任务栏中显示"应为True

尝试使用

System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle

最新更新