【问题标题】:How can i get HDC or ScreenShot from Adobe AIR Application?如何从 Adob​​e AIR 应用程序获取 HDC 或 ScreenShot?
【发布时间】:2012-03-25 01:25:03
【问题描述】:

首先,我的英语很短。但我尽力了。

环境:
opengl
win32 接口
c++
视觉工作室 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 应用程序屏幕截图的字节数组?帮帮我!

【问题讨论】:

    标签: c++ visual-studio winapi air adobe


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 2010-10-17
      • 1970-01-01
      • 2013-06-07
      • 2011-01-14
      • 2011-02-12
      相关资源
      最近更新 更多