Upon further tries, I can get handles, DCs, and/or Win32 BMPs from the desktop, but I can't get to a DIB from there.
Can someone outline the general process that might be required? Ie., get window handle create in/out DCs select bmp to outDC blit inDC data I tried emulating a nice IronPython example: http://www.voidspace.org.uk/python/weblog/arch_d7_2006_10_28.shtml but, hdcSrc = win32gui.GetWindowDC(win32gui.GetDesktopWindow()) hdcDestH = win32ui.CreateDCFromHandle(win32gui.GetDesktopWindow() hdcDest = win32gui.CreateCompatibleDC(hdcSrc) hBitmap = win32gui.CreateCompatibleBitmap(hdcSrc, 1024, 768) win32gui.SelectObject(hdcDest, hBitmap) hdcDestH.BitBlt((0, 0), (1024, 768), hdcSrc, (0, 0), 0x00CC0020) fails with "TypeError: The 'O' param must be a PyCDC object". So, how to make the DCs cooperate? myHdc = win32gui.GetDC(dtwnd) win_sz = win32gui.GetClientRect(dtwnd) myDC = win32ui.CreateDC() myMemDC = myDC.CreateCompatibleDC(myHdc) fails with "TypeError: argument number 1: object is not a PyCDC" I need a DIB, I think, (or anything that can be used with pymedia). I started working on a ctypes version: CreateDIBitmap = windll.GDI32.CreateDIBitmap etc., but that will take me some time, I think, and I'm not sure if it's the correct procedure anyway. Thanks, more tries tomorrow. Ray At 05:02 PM 12/6/2006, Tim Roberts wrote: 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, [EMAIL PROTECTED] Providenza & Boekelheide, Inc. _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32 _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32