在我的 C++ 应用程序中,我有以下代码:
ShowWindow(hDlg, SW_HIDE);
MakeScreenshot();
ShowWindow(hDlg, SW_SHOW);
Run Code Online (Sandbox Code Playgroud)
这应该捕获屏幕截图,而不需要当前应用程序窗口。然而有一个问题。SW_HIDE 需要一些时间,因为我的 Windows 8.1 配置为使用动画效果。因此,窗口的隐藏大约需要 400 毫秒,如果在此间隔期间捕获屏幕截图(事实确实如此),它还将包含应用程序本身的窗口,这是我不喜欢的。
有什么方法可以立即隐藏当前窗口,这样它就不会包含在创建屏幕截图函数中,该函数在它之后立即调用?如果没有,除了应用程序本身之外,还有其他首选方法如何截取 Windows 桌面的屏幕截图吗?在 MakeScreenshot 之前添加延迟并不是什么好的解决方案。谢谢。
对我有用的:
this->ModifyStyleEx(0, WS_EX_LAYERED | WS_EX_TOPMOST); //just a backup
COLORREF c;
BYTE b;
DWORD flags;
this->GetLayeredWindowAttributes(&c, &b, &flags); //just a backup
this->SetLayeredWindowAttributes(0, 0, LWA_ALPHA);
//CODE TO TAKE A SCREENSHOT
this->SetLayeredWindowAttributes(c, b, flags); //just a restore
this->ModifyStyleEx(WS_EX_LAYERED | WS_EX_TOPMOST, 0); //just a restore
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5437 次 |
| 最近记录: |