
Namespace ScreenCapture
'/ <summary>
'/ Summary description for Form1.
'/ </summary>
Public Class Form1
Inherits System.Windows.Forms.Form
Private textBox1 As System.Windows.Forms.TextBox
Private WithEvents button1 As System.Windows.Forms.Button
Private checkBox1 As System.Windows.Forms.CheckBox
' <summary>
' Required designer variable.
' </summary>
Private components As System.ComponentModel.Container = Nothing
Public Sub New()
'
' Required for Windows Form Designer support
'
InitializeComponent()
'
' TODO: Add any constructor code after InitializeComponent call
'
End Sub 'New
' <summary>
' Clean up any resources being used.
' </summary>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub 'Dispose
#Region "Windows Form Designer generated code"
' <summary>
' Required method for Designer support - do not modify
' the contents of this method with the code editor.
' </summary>
Private Sub InitializeComponent()
Me.textBox1 = New System.Windows.Forms.TextBox()
Me.button1 = New System.Windows.Forms.Button()
Me.checkBox1 = New System.Windows.Forms.CheckBox()
Me.SuspendLayout()
'
' textBox1
'
Me.textBox1.Location = New System.Drawing.Point(32, 56)
Me.textBox1.Name = "textBox1"
Me.textBox1.TabIndex = 0
Me.textBox1.Text = "textBox1"
'
' button1
'
Me.button1.Location = New System.Drawing.Point(168, 40)
Me.button1.Name = "button1"
Me.button1.TabIndex = 1
Me.button1.Text = "button1"
'
' checkBox1
'
Me.checkBox1.Location = New System.Drawing.Point(32, 160)
Me.checkBox1.Name = "checkBox1"
Me.checkBox1.TabIndex = 2
Me.checkBox1.Text = "checkBox1"
'
' Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(checkBox1)
Me.Controls.Add(button1)
Me.Controls.Add(textBox1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub 'InitializeComponent
#End Region
' <summary>
' The main entry point for the application.
' </summary>
<STAThread()> _
Shared Sub Main()
Application.Run(New Form1())
End Sub 'Main
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub 'Form1_Load
Private Sub CaptureDesk()
Dim objMethods As New MethodsForCapture()
objMethods.CaptureScreen("c:\TestCapture.jpg", ImageFormat.Jpeg)
MessageBox.Show("Captured")
Dim f As New FileStream("c:\TestCapture.jpg", FileMode.Open)
Dim b As New Bitmap(f, True)
Clipboard.SetDataObject(b, True)
Dim app As New Word.ApplicationClass()
Dim file As Object = "c:\ScreenDoc.doc"
Dim miss As Object = System.Reflection.Missing.Value
Dim otrue As Object = True
Dim ofalse As Object = False
Try
Dim doc As Word.Document = app.Documents.Open(file, miss, ofalse, miss, miss, miss, miss, miss,
miss, miss,miss,otrue, miss, miss, miss)
Dim start As Object = 0
Dim [end] As Object = 0
Dim rng As Word.Range = doc.Range(start, [end])
rng.Paste()
doc.Save()
app.Quit(otrue, miss, miss)
Catch ex As Exception
End Try
End Sub 'CaptureDesk
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
CaptureDesk()
End Sub 'button1_Click
End Class 'Form1
Public Class GDI32
<DllImport("GDI32.dll")> _
Public Shared Function BitBlt(ByVal hdcDest As Integer, ByVal nXDest As Integer, ByVal nYDest As
Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As Integer, ByVal nXSrc As
Integer, ByVal nYSrc As Integer, ByVal dwRop As Integer) As Boolean
<DllImport("GDI32.dll")> _
Public Shared Function CreateCompatibleBitmap(ByVal hdc As Integer, ByVal nWidth As Integer, ByVal
nHeight As Integer) As Integer
<DllImport("GDI32.dll")> _
Public Shared Function CreateCompatibleDC(ByVal hdc As Integer) As Integer
<DllImport("GDI32.dll")> _
Public Shared Function DeleteDC(ByVal hdc As Integer) As Boolean
<DllImport("GDI32.dll")> _
Public Shared Function DeleteObject(ByVal hObject As Integer) As Boolean
<DllImport("GDI32.dll")> _
Public Shared Function GetDeviceCaps(ByVal hdc As Integer, ByVal nIndex As Integer) As Integer
<DllImport("GDI32.dll")> _
Public Shared Function SelectObject(ByVal hdc As Integer, ByVal hgdiobj As Integer) As Integer
End Class 'GDI32
Public Class User32
<DllImport("User32.dll")> _
Public Shared Function GetDesktopWindow() As Integer
<DllImport("User32.dll")> _
Public Shared Function GetWindowDC(ByVal hWnd As Integer) As Integer
<DllImport("User32.dll")> _
Public Shared Function ReleaseDC(ByVal hWnd As Integer, ByVal hDC As Integer) As Integer
End Class 'User32
Public Class MethodsForCapture
Public Sub CaptureScreen(ByVal fileName As String, ByVal imageFormat As ImageFormat)
Dim hdcSrc As Integer = User32.GetWindowDC(User32.GetDesktopWindow())
Dim hdcDest As Integer = GDI32.CreateCompatibleDC(hdcSrc)
Dim hBitmap As Integer = GDI32.CreateCompatibleBitmap(hdcSrc, GDI32.GetDeviceCaps(hdcSrc, 8),
GDI32.GetDeviceCaps(hdcSrc, 10))
GDI32.SelectObject(hdcDest, hBitmap)
GDI32.BitBlt(hdcDest, 0, 0, GDI32.GetDeviceCaps(hdcSrc, 8), GDI32.GetDeviceCaps(hdcSrc, 10),
hdcSrc, 0, 0, &HCC0020)
SaveImageAs(hBitmap, fileName, imageFormat)
Cleanup(hBitmap, hdcSrc, hdcDest)
End Sub 'CaptureScreen
Private Sub Cleanup(ByVal hBitmap As Integer, ByVal hdcSrc As Integer, ByVal hdcDest As Integer)
User32.ReleaseDC(User32.GetDesktopWindow(), hdcSrc)
GDI32.DeleteDC(hdcDest)
GDI32.DeleteObject(hBitmap)
End Sub 'Cleanup
Private Sub SaveImageAs(ByVal hBitmap As Integer, ByVal fileName As String, ByVal imageFormat As
ImageFormat)Dim image As New Bitmap(Drawing.Image.FromHbitmap(New IntPtr(hBitmap)),
Drawing.Image.FromHbitmap(New IntPtr(hBitmap)).Width, Drawing.Image.FromHbitmap(New IntPtr
(hBitmap)).Height)
image.Save(fileName, imageFormat)
End Sub 'SaveImageAs
End Class 'MethodsForCapture
End Namespace 'ScreenCapture
NOTE: THIS ARTICLE IS CONVERTED FROM C# TO VB.NET USING A CONVERSION TOOL. ORIGINAL ARTICLE CAN BE FOUND ON C# CORNER (http://www.c-sharpcorner.com/).