在我的C++应用程序,我有以下代码:的ShowWindow()SW_HIDE窗口即刻,不影响
ShowWindow(hDlg, SW_HIDE);
MakeScreenshot();
ShowWindow(hDlg, SW_SHOW);
这应该捕获屏幕截图没有当前应用程序窗口。但是有一个问题。 SW_HIDE需要一些时间,因为我的Windows 8.1被配置为使用动画效果。所以窗口的隐藏大约需要400毫秒,如果在这个时间间隔(它是)捕获屏幕截图,它也将包含应用程序本身的窗口,这是我不喜欢的。
有没有什么办法可以立即隐藏当前窗口,所以它不会被包含在创建截图函数中,这个函数在它之后立即被调用?如果没有,有没有其他的首选方式如何截取Windows桌面的截图,不包括应用程序本身?在MakeScreenshot之前添加延迟并不是一个好的解决方案。谢谢。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa969524%28v=vs.85%29.aspx –
@HansPassant:你在想的'DWMWA_CLOAK'属性? –
@Tomas:尝试使用SystemParametersInfo()在隐藏窗口之前禁用动画,并在显示窗口后重新启用动画。或者在窗口上启用'WS_EX_LAYERED'样式,然后将其不透明度设置为0,然后返回到255.或者,将窗口移出屏幕然后将其移回。 –