WinAPI PrintWindow()的更快替代方案?

时间:2014-11-14 13:34:58

标签: c++ windows winapi screenshot

我正在编写一个程序,它会不断扫描打开窗口的某些像素(可能在后台)并对更改做出反应。我目前正在使用以下代码:

HDC ClientProfile::prepareSurface() {
    UpdateWindow(handle);
    HDC window_dc = GetDC(handle);
    HDC res = CreateCompatibleDC(window_dc);
    RECT r;
    GetClientRect(handle, &r);
    HBITMAP bmp = CreateCompatibleBitmap(window_dc, r.right - r.left, r.bottom - r.top);
    SelectObject(res, bmp);
    PrintWindow(handle, res, PW_CLIENTONLY);
    DeleteObject(bmp);
    ReleaseDC(handle, window_dc);
    return res;
}

然后我在返回的HDC上使用GetPixel()。这个工作非常好,但是当同时扫描很多窗口时,它对我的​​需求来说有点太慢了。 我特别注意到PrintWindow()消耗的时间因其扫描的应用程序而异(可能是因为处理消息的方式?)。 有办法加快这个速度吗?我试着用

SendMessage(handle,WM_PRINT/WM_PRINTCLIENT, WPARAM(res),PRF_CLIENT);

但这根本不起作用(它甚至会有所作为吗?)。 我找不到任何其他解决方案来解决我的问题,这里的任何人都有可能吗?

提前致谢。

0 个答案:

没有答案