我正在编写一个程序,它会不断扫描打开窗口的某些像素(可能在后台)并对更改做出反应。我目前正在使用以下代码:
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);
但这根本不起作用(它甚至会有所作为吗?)。 我找不到任何其他解决方案来解决我的问题,这里的任何人都有可能吗?
提前致谢。