2013-01-17 38 views
2

我根据传递给我的EnumWindowsProc的一组关键字将窗口句柄存储到列表中,我将其与窗口标题(调用GetWindowsText的结果)进行比较。当后者关闭时,窗户的手柄会发生什么变化?

我的EnumWindows函数在一个循环中被调用几次,我的列表被创建为不会多次添加相同的元素。此时,如果在运行时用户关闭了我目前在列表中的其中一个窗口,我希望能够遍历列表并消除关闭窗口的句柄。我不想在列表中的每个句柄都使用IsWindowVisible,因为我需要知道该窗口是否关闭,并且此函数将为最小化窗口返回FALSE。

是否有任何其他方式我可以从窗口句柄知道它指向的窗口是否已关闭?

任何帮助将不胜感激! PS:我试图把超链接放到所有引用的功能上,但我没有足够的声望。对不起

回答

2

您可以使用IsWindow函数来检查句柄是否有效。

请注意,由于窗口关闭后可以重新使用句柄,因此应该验证窗口是否仍然符合初始条件(重新检查其标题,类别等)。

+0

感谢您的回答!不过我还是很关心把手回收到同名窗口的可能性。这是否有可能? – wotann07

+0

概率很低,但它*可能会发生,如果您不期待它可能是一个讨厌的事情来调试。说实话,我确信有很多程序忽略了这些细节。 – efotinis

相关问题