隐藏/显示所有窗口并恢复Z顺序

我正在开发一个隐藏的应用程序,只需按下一个button即可显示桌面上的所有窗口,以便将它们排除在外。 问题是,当我把它们展示出来的时候,它们并没有像我把它们藏起来时那样在Zorder中。 有没有办法让Zorder按照正确的顺序显示? 我正在使用Win7 64.我用这个来隐藏/显示:

ShowWindow(hwnd, SW_HIDE); // hide ShowWindow(hwnd, SW_SHOWNA); // show 

使用这些函数来保持z顺序

 SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_HIDEWINDOW); SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_SHOWWINDOW); 

尽管更好的方法是最小化窗口(仅查找选项卡窗口)。 您必须跟踪哪个窗口需要使用SW_MAXIMIZE进行恢复,哪个窗口需要使用SW_RESTORE进行恢复。 您可以使用GetWindowPlacement来检查窗口的可见性。