win32ui screen capture

Mark S Pryor marks.pryorSHRUB at CHENEYverizon.net
Fri Jun 27 01:11:04 EDT 2003


Hi,
<Me Mine> wrote in message
news:o43nfvsc8r4q934p709l1g3thtoube37qn at 4ax.com...
> i,
> I have trying to code a small console app that will
> allow a user to select a window and then create a
> screen capture of the window.  I haven't been able to
> figure out how to do the screen capture part.  The
> code is as follows, the commented out lines at the end
> are things I have tried, but don't work.  Whenever I
> try to create a compatibe Bitmap or DC it comes back
> with an error as
> win32ui: CreateCompatibleDC failed
> or
> AttributeError: CreateCompatibleDC
> Any help would be greatly appreciated.
>
> import win32gui
> import win32ui
>
> numWindows = 0
> windows = []
> winDict = {}
> windowsText=[]
> inc = 0
>
> def _MyCallback( hwnd, extra ):
> extra.append(hwnd)
>
>
> win32gui.EnumWindows(_MyCallback, windows)
> for i in windows:
> if win32gui.IsWindowVisible(i):
> if win32gui.IsWindowVisible:
> windowsText.append(i)
> winDict[numWindows] = i
> numWindows +=1
>
>
>
>
> print "Please select a window to capture"
> for window in windowsText:
> windowText = win32gui.GetWindowText(window)
> print inc, windowText
> inc += 1
>
> selection = input()
>
> print win32gui.GetWindowText(winDict[selection])
> myDC = win32ui.CreateDCFromHandle(winDict[selection])
> win32gui.SetForegroundWindow(winDict[selection])
> win_sz = win32gui.GetClientRect(winDict[selection])
> myBitMap = win32ui.CreateBitmap()
> #myMemDC = win32ui.CreateCompatibleDC(myDC)
> #myBitMap.BitBlt((0,0),(win_sz[2],win_sz[3],myDC,(0,0),0))
> #myBitMap.CreateCompatibleBitMap(myDC,win_sz[2], win_sz[3])
> #myBitMap.CreateCompatibleDC(myDC)
>
>
> Thanks,
> Rob

You may be able to make this work ... eventually. However,
circulating in the Python community you will find the C file
_grabscreen.c with all the same API calls you are trying to use
in standard C.

see this post
http://groups.google.com/groups?selm=mailman.1011217637.9447.python-list%40p
ython.org

It explains how to compile the module _grabscreen.pyd with MS Visual C.
I was able to get a screen shot script in 10 minutes after I read this
post. If you don't have a grabscreen module already, see this ZIP file
for the relevant files. Use the file ImageGrab1.py to make a screen
capture of the desktop and save the results as PNG.

(for ActivePython 2.2 only)
http://mysite.verizon.net/res1ur2j/GrabScreen.zip

you will need PIL from
http://www.pythonware.com/products/pil/

hth,
Mark Pryor






More information about the Python-list mailing list