捕获悬浮窗口,该如何处理
捕获悬浮窗口
在进行屏幕捕获时,有些窗口的画面为什么捕获不了,比如,像迅雷的悬浮窗口。
------解决方案--------------------
X雷的悬浮窗口,是一个分层窗口(半透明风格),捕获屏幕的时候,需要多加一个参数才行。
在进行屏幕捕获时,有些窗口的画面为什么捕获不了,比如,像迅雷的悬浮窗口。
------解决方案--------------------
X雷的悬浮窗口,是一个分层窗口(半透明风格),捕获屏幕的时候,需要多加一个参数才行。
- C/C++ code
void __fastcall CrnCaptureScreenWithAlphaWnd(Graphics::TBitmap *bmp) { DWORD CAPTUREBLT1 = 0x40000000; HDC hdcScreen = ::CreateDC("DISPLAY", NULL, NULL, NULL); HDC hdcCompatible = ::CreateCompatibleDC(hdcScreen); HBITMAP hbmpScreen = ::CreateCompatibleBitmap(hdcScreen, GetDeviceCaps(hdcScreen, HORZRES), GetDeviceCaps(hdcScreen, VERTRES)); ::SelectObject(hdcCompatible, hScreen); bmp->Handle = hbmpScreen ; ::BitBlt(hdcCompatible, 0, 0, bmp->Width, bmp->Height, hdcScreen, 0, 0, SRCCOPY | CAPTUREBLT1 ); ::DeleteDC(hdcScreen); ::DeleteDC(hdcCompatible); ::DeleteObject(hbmpScreen); }