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

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

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

我怎样才能在C#和.NET 3.5中执行此操作?

如果它是一个窗口句柄,你可以调用isWindow(hWnd);

来自msdn:

回报价值

BOOL

如果窗口句柄标识现有窗口,则返回值为非零。

如果窗口句柄未标识现有窗口,则返回值为零。 备注

线程不应该将IsWindow用于它没有创建的窗口,因为在调用此函数后窗口可能会被销毁。 此外,由于窗口把手被回收,手柄甚至可以指向不同的窗口。

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

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