Saturday, December 19, 2015

Print Screen Of Windows Form

Declare Auto Function SendMessage Lib "user32" ( _
           ByVal hWnd As IntPtr, _
           ByVal Msg As Integer, _
           ByVal wParam As IntPtr, _
           ByVal lParam As Integer) As Integer
    Private Enum EDrawingOptions As Integer
        PRF_CHECKVISIBLE = &H1
        PRF_NONCLIENT = &H2
        PRF_CLIENT = &H4
        PRF_ERASEBKGND = &H8
        PRF_CHILDREN = &H10
        PRF_OWNED = &H20
    End Enum
    Private Sub Button6_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button6.Click
        Const WM_PRINT As Integer = &H317
        Dim myBmp As Bitmap
        Dim myGraphics As Graphics
        Dim hdc As System.IntPtr
        myBmp = New Bitmap( _
            Me.DisplayRectangle.Width, _
            Me.DisplayRectangle.Height)
        myGraphics = Graphics.FromImage(myBmp)
        hdc = myGraphics.GetHdc
        Call SendMessage(Me.Handle, WM_PRINT, hdc, _
            EDrawingOptions.PRF_CHILDREN Or _
            EDrawingOptions.PRF_CLIENT Or _
            EDrawingOptions.PRF_NONCLIENT Or _
            EDrawingOptions.PRF_OWNED)
        myGraphics.ReleaseHdc(hdc)
        myBmp.Save("D:\out.bmp")
        myGraphics.Dispose()
        myGraphics = Nothing
        myBmp = Nothing
    End Sub