c – ShowWindow()SW_HIDE窗口立即生效,没有效果

在我的C应用程序中,我有以下代码:

ShowWindow(hDlg, SW_HIDE);
MakeScreenshot();
ShowWindow(hDlg, SW_SHOW);

这应该捕获屏幕截图,不包括当前应用程序窗口.但是有一个问题. SW_HIDE需要一些时间,因为我的Windows 8.1配置为使用动画效果.所以隐藏窗口需要大约400毫秒,如果在此间隔期间捕获屏幕截图(它是),它还将包含应用程序本身的窗口,我不喜欢.

有没有办法立即隐藏当前窗口,所以它不会包含在创建截图函数中,后面会立即调用它?如果没有,除了应用程序本身之外,还有其他任何首选方法如何截取Windows桌面的屏幕截图吗?在MakeScreenshot之前添加延迟不是任何好的解决方案.谢谢.

最佳答案 您可以使用MoveWindow(或SetWindowsPos)将不需要的窗口移动到虚拟桌面的可见区域之外,然后将其移回.

您可能需要枚举监视器以找到超出所有监视器范围的坐标,这将是一些工作.据推测,您的屏幕截图代码是计算快照的坐标,因此您可以重新使用该计算来找到一个安全的窗口停放位置.

点赞