Screen Capture

  • Thread starter Thread starter Newbie Coder
  • Start date Start date
N

Newbie Coder

Hello All

VB.NET 2003 Code Only (not C#)

How do I capture a window by knowing its class name & save it as a jpg on a
button click? Of course the window won't be in focus

Any help would be appreciated without Google links please

TIA
 
Here is something that that might help get you started ... the CapturePanel
method is probably what your looking for.
Imports System.Runtime.InteropServices

#Region " Printing Support "

<DllImport("gdi32.DLL", EntryPoint:="BitBlt", SetLastError:=True,
CharSet:=CharSet.Unicode, _

ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _

Private Shared Function BitBlt(ByVal hdcDest As IntPtr, ByVal nXDest As
Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As
Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As
Integer, ByVal dwRop As System.Int32) As Boolean

' Leave function empty - DLLImport attribute forwards calls to MoveFile to

' MoveFileW in KERNEL32.DLL.

End Function



'Returns the panel as a bitmap

Private Function CapturePanel() As Bitmap

Dim g1 As Graphics = Me.CreateGraphics()

Dim MyImage As Bitmap = New Bitmap(Me.ClientRectangle.Width,
(Me.ClientRectangle.Height), g1)

Dim g2 As Graphics = Graphics.FromImage(MyImage)

Dim dc1 As IntPtr = g1.GetHdc()

Dim dc2 As IntPtr = g2.GetHdc()

BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, (Me.ClientRectangle.Height),
dc1, 0, 0, 13369376)

g1.ReleaseHdc(dc1)

g2.ReleaseHdc(dc2)

'saves image to c drive for testing - comment out for production

'MyImage.Save("c:\abc.bmp")

Return MyImage

End Function

#End Region
 
Thank you for your reply, but how do I get the known class & pass it on to
the CapturePanel Function?

Plus I need to capture the window at 100% ratio. How?
 
I have the code now I think. Will adapt it & use, but it does capture the
window I pass the handle to so far, but 2 windows have the same class & its
this hurdle I need to overcome now
 
Back
Top