Process.GetCurrentProcess()。MainWindowHandle返回零

时间:2013-12-04 08:40:18

标签: c# .net windows winforms process

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

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

Process.GetCurrentProcess().MainWindowHandle

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

2 个答案:

答案 0 :(得分:3)

MSDN说:

  

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

  

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

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

答案 1 :(得分:-8)

尝试使用

System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle