编写一个转储屏幕像素的RDP客户端

izo*_*ica 6 c++ rdp freerdp

我想实现一个RDP客户端,C++它能够获取屏幕所有像素的颜色值并将它们转储到文件中.我知道这在概念上与RDP的工作方式不同,但我需要它用于我的应用程序.我正在尝试使用freerdp,但我不确定如何有效地编写一个简单地将所有像素转储到文件中的客户端.

到目前为止,我最好的尝试是使用该功能,gdi_GetPixel_32bpp但当然,依次为每个像素调用此函数远非有效.

使用其他库的解决方案也将受到高度赞赏.

Vin*_*enz 1

那么你可以尝试这个(免责声明未经测试的伪代码):

HGDI_DC memDC = gdi_CreateCompatibleDC ( hDC );
HGDI_BITMAP memBM = gdi_CreateCompatibleBitmap ( hDC, screenWidth, screenHeight );
gdi_SelectObject ( memDC, memBM );
gdi_BitBlt(memDC, 0, 0, screenWidth, screenHeight, hDC, 0, 0, GDI_SRCCOPY);
Run Code Online (Sandbox Code Playgroud)

现在您应该拥有memBM->data完整的像素数据数组。memBM->data 的大小如下:memBM->width * memBM->height * memBM->bytesPerPixel

希望这至少对您有所帮助。