是否有一个windows api函数来确定隐藏窗口是否已关闭或未使用其句柄

本文关键字:是否 句柄 未使用 窗口 隐藏 windows 有一个 api 函数 | 更新日期: 2023-09-27 18:26:28

我有一个隐藏窗口的句柄(IntPtr),它在一定时间后自动终止/退出,比如说在mintue之后。windows api中是否有一个函数可以确定隐藏窗口是否已终止或未使用其句柄?

请注意,使用ShowWindow外部函数隐藏窗口,其中0是参数nCmdShow的值。

是否有一个windows api函数来确定隐藏窗口是否已关闭或未使用其句柄

IsWindow函数应该按照您的要求执行。但是,您应该小心:窗口句柄可以回收,这样您的窗口可能会被关闭,并将其句柄分配给其他一些新窗口。

我想您可以与IsWindow核实它是否仍然存在。有关详细信息,请参阅MSDN。

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

如果窗口刚刚被隐藏,使用ShowWindow(0)(即SW_HIDE),那么HWND可能仍然有效,因此IsWindow()将返回TRUE。要检查有效的HWND是可见还是不可见,请使用IsWindowVisibleUSER32调用。

根据目标应用程序的不同,除了IsWindow()之外,您可能还想使用它,并检查pid和类以防止HWND回收。