如何确定给定的hWnd是否仍然有效?

时间:2010-04-29 16:24:06

标签: c# winforms handle hwnd

我正在使用第三方类来生成Internet Explorer实例。该类有一个属性hWnd,它返回进程的hWnd。

稍后,我可能想要重用应用程序的实例(如果它仍然存在),所以我需要告诉我的帮助程序类附加到它。在此之前,我想知道给定的hWnd是否仍然有效,否则我将生成另一个实例。

我怎样才能在C#& .NET 3.5?

1 个答案:

答案 0 :(得分:33)

如果是窗口句柄,您可以拨打isWindow(hWnd);

来自msdn:

  

返回值

     

BOOL

     

如果窗口句柄识别出一个   现有窗口,返回值为   非零值。

     

如果窗口句柄无法识别   现有窗口,返回值   是零。备注

     

线程不应该使用IsWindow   它没有创建的窗口,因为   之后窗户可能会被摧毁   这个功能被调用了。进一步,   因为窗户把手是回收的   手柄甚至可以指向一个   不同的窗口。

顺便说一句,因为你在.NET中,你必须做类似的事情:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindow(IntPtr hWnd);