如何判断给定的hWnd是否仍然有效?
问题描述:
我正在使用生成Internet Explorer实例的第三方类。这个类有一个属性hWnd,它返回进程的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);
完美,正是我一直在寻找。谢谢您的帮助! – 2010-04-29 16:38:29
需要注意的一点是,DllImport属性位于System.Runtime.InteropServices命名空间中。 – 2010-04-29 16:56:24