[python-win32] screen capture and win32gui.GetDesktopWindow()

Tim Roberts timr at probo.com
Thu Dec 7 02:02:41 CET 2006

Ray Schumacher wrote:
> I've been mulling screen capture code. I tried PIL's 
> ImageGrab().grab() (with pymedia) but find PIL's method to be pretty 
> slow, ~4grabs per second max with no other processes.
> pymedia is pretty quick once I hand it the data.

How large is your screen?  A 1600x1200 true-color desktop is 8 megabytes
worth of pixels, and it can take tens of milliseconds just to copy it
over the PCI bus to main memory.

> There has to be another way to get a copy or buffer() of the screen 
> DC's data that is faster (I hope).
> I putsed around with win32gui
> desktop = win32gui.GetDesktopWindow()
> dt_l, dt_t, dt_r, dt_b = win32gui.GetWindowRect(desktop)
> but couldn't see how to get at the data via the handle.

You can use BitBlt to copy it to a DIB, but it's not going to be very
convenient to work with.

Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.

More information about the Python-win32 mailing list