c++ - 如何从 Adob​​e AIR 应用程序获取 HDC 或屏幕截图?

标签 c++ visual-studio winapi air adobe

首先,我向你道歉,我的英语很短。但我尽力了。

环境:
opengl
win32 接口(interface)
C++
Visual Studio 2010

我的项目是:
使用由 Adob​​e AIR 复制 iPhone 的应用程序。 (这不是我的程序)
我想将该程序的屏幕截图纹理化到我的 opengl。许多 win32 应用程序可以使用下一个代码获取实时屏幕截图:

HWND hSrc = ::FindWindow(NULL, "iBBDemo3");
HDC hSrcDC = GetDC(hSrc);
HDC hdc = GetDC(NULL);

RECT targetRect;
GetClientRect(hSrc,&targetRect);

int width = targetRect.right;
int height = targetRect.bottom;
HDC memdc = CreateCompatibleDC(hdc);

int* t;

BITMAPINFO bmii;
ZeroMemory(&bmii,sizeof(bmii));
bmii.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmii.bmiHeader.biBitCount = 32;
bmii.bmiHeader.biWidth = width;
bmii.bmiHeader.biHeight = height;
bmii.bmiHeader.biPlanes = 1;

HBITMAP hBitMapUsing = CreateDIBSection(hdc,&bmii,DIB_RGB_COLORS,(void**)&t,NULL,0);

HDC dcTarget = CreateCompatibleDC(hdc);
SelectObject(dcTarget,hBitMapUsing);
RECT rt;
GetClientRect(NULL,&rt);
::PrintWindow(hSrc, dcTarget, 0);

return t; //t is byte array of texture that i want

这段代码工作正常。并实时更新纹理。
但 adobe air 应用程序无法使用此代码。
FindWindow 工作正常,getdc 工作正常但屏幕截图的字节数组是全像素黑色。
谁知道为什么会出现此问题或其他获取 Adob​​e AIR 应用程序屏幕截图字节数组的方法?帮帮我!

最佳答案

有可能 WM_PRINT PrintWindow 生成的消息未被目标处理。您可以尝试直接从目标 DC BitBlt

关于c++ - 如何从 Adob​​e AIR 应用程序获取 HDC 或屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9602803/

相关文章:

c++ - 将 Char 转换为其 Int 表示

c++ - 如何在 C++ 中为 sqlite 进行非静态回调?

c++ - C/C++ 优化 : negate doubles fast

mysql - 如何在VS 2013中将MySQL表添加到对象关系设计器?

c - 链接期间 WINAPI 出现奇怪的错误

performance - CreateFile() 的成本是多少?

c++ - 如何在 Qt (C++) 中搜索(已过滤的)QSortFilterProxyModel?

visual-studio - 带有 VIsual Studio 2015 和 Clang 的 CMake

c# - 有没有办法导航到接口(interface)背后方法的实际实现?

c++ - 使用IMFSinkWriter更改标题,作者等元数据