C++ 如何从AdobeAIR应用程序获取HDC或屏幕截图?

C++ 如何从AdobeAIR应用程序获取HDC或屏幕截图?,c++,visual-studio,winapi,air,adobe,C++,Visual Studio,Winapi,Air,Adobe,首先,我向你道歉,我的英语很短。但我尽力了 环境: opengl win32 api C++ VisualStudio2010 我的项目是: 使用AdobeAIR制作的复制iPhone的应用程序。这不是我的节目 我想把那个程序的屏幕截图纹理到我的opengl中。许多win32应用程序可以通过下一个代码获得实时屏幕截图: HWND hSrc = ::FindWindow(NULL, "iBBDemo3"); HDC hSrcDC = GetDC(hSrc); HDC hdc = GetDC(NUL

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

环境: opengl win32 api C++ VisualStudio2010

我的项目是: 使用AdobeAIR制作的复制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
这段代码运行良好。并实时更新纹理。 但AdobeAIR应用程序无法使用此代码。 FindWindow工作正常,getdc工作正常,但屏幕截图的字节数组是所有像素的黑色。 谁知道为什么会出现这个问题,或者以另一种方式获取AdobeAIR应用程序屏幕截图的字节数组?救救我

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

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