Image capture

C

Catalin Lungu

Hi,
Can anybody help me to implement the following VB code in Python. Thanks in
advance.

Private Declare Function SendMessage Lib "user32.dll" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const WM_PAINT = &HF
Private Const WM_PRINT = &H317
Private Const PRF_CLIENT = &H4&
Private Const PRF_CHILDREN = &H10&
Private Const PRF_OWNED = &H20&

Private Sub Command1_Click()
SendMessage grid.hwnd, WM_PAINT, picture.hDC, 0
SendMessage grid.hwnd, WM_PRINT, picture.hDC, PRF_CHILDREN Or PRF_CLIENT
Or PRF_OWNED
picture.Picture = picture.Image
picture.Refresh
End Sub


Catalin
(e-mail address removed)
 
K

Kartic

Catalin,

Some explanation about what you are tring to do will be of immense
help.

Did you want to capture some other Windows object from Python or do you
want to capture a Python GUI application from Python?

I might be able to help out, but please send more details.
Thank you,
--Kartic
 
C

Catalin Lungu

Hi,

I want to capture a no visible area of a wxFrame of Python. This area
contain a wxGrid object. In VB6 this code work very good.

Thanks.
 
K

Kartic

Hi Catalin,

Here are the modifications to your code. I am emailing you the complete
file back to your email address. Please note that you need PIL (Python
Imaging Library) to grab the window. I included a step to save the
image, but you can do whatever you want with it.

Thanks,
--Kartic

-------------- Unified Diff ---------------

--- Catalin.txt Wed Jan 05 11:43:38 2005
+++ frmDesign.py Wed Jan 05 11:43:17 2005
@@ -1,7 +1,7 @@
from wxPython.wx import *
from wxPython.grid import *
from win32api import SendMessage
-import win32ui
+import win32ui, win32gui, ImageGrab

WM_PAINT = 0xf
WM_PRINT = 0x317
@@ -47,6 +47,10 @@
dc = wxMemoryDC()
dc.SelectObject(bmp)
dc.Clear()
+ win_sz = win32gui.GetWindowRect(self.grd.GetHandle())
+ print win_sz
+ im = ImageGrab.grab((win_sz[0],win_sz[1],win_sz[2],win_sz[3]))
+ im.save('C:/TEMP/grid.jpg')
SendMessage(self.grd.GetHandle(), WM_PAINT, dc.GetHDC(), 0)
SendMessage(self.grd.GetHandle(), WM_PRINT, dc.GetHDC(),
PRF_CHILDREN|PRF_CLIENT|PRF_OWNED)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top