ByteScout Screen Capturing SDK - VB.NET - Command line console - ByteScout
Announcement
Our ByteScout SDK products are sunsetting as we focus on expanding new solutions.
Learn More Open modal
Close modal
Announcement Important Update
ByteScout SDK Sunsetting Notice
Our ByteScout SDK products are sunsetting as we focus on our new & improved solutions. Thank you for being part of our journey, and we look forward to supporting you in this next chapter!

ByteScout Screen Capturing SDK – VB.NET – Command line console

  • Home
  • /
  • Articles
  • /
  • ByteScout Screen Capturing SDK – VB.NET – Command line console

ByteScout Screen Capturing SDK – VB.NET – Command line console

Module1.vb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Globalization
Imports System.Threading
Imports System.Runtime.InteropServices
 
Imports BytescoutScreenCapturingLib
 
' NOTE: if you are getting error like "invalid image" related to loading the SDK's dll then
' try to do the following:
' 1) remove the reference to the SDK by View - Solution Explorer
' then click on References, select Bytescout... reference name and right-click it and select Remove
' 2) To re-add click on the menu: Project - Add Reference
' 3) In "Add Reference" dialog switch to "COM" tab and find Bytescout...
' 4) Select it and click "Add"
' 5) Recompile the application
' Note: if you need to run on both x64 and x86 then please make sure you have set "Embed Interop Types" to True for this reference
 
Module Module1
    Public Class Win32Interop
        <DllImport("crtdll.dll")> _
        Public Shared Function _kbhit() As Integer
        End Function
    End Class
 
    Sub Main(ByVal args As String())
        Dim capturer As New Capturer()
 
        If args.Length < 1 Then
            usage(capturer)
            Exit Sub
        End If
 
        capturer.OutputFileName = args(0)
        capturer.CapturingType = CaptureAreaType.catRegion
 
    ' set border style
        capturer.CaptureAreaBorderType = CaptureAreaBorderType.cabtDashed
 
    ' uncomment to enable recording of semitransparent or layered windows (Warning: may cause mouse cursor flickering)
    ' capturer.CaptureTransparentControls = true
 
    ' // WMV and WEBM output use WMVVideoBitrate property to control output video bitrate
    ' // so try to increase it by x2 or x3 times if you think the output video are you are getting is laggy
    ' capturer.WMVVideoBitrate = capturer.WMVVideoBitrate * 2
 
 
 
        setParams(args, capturer)
 
        Try
            capturer.Run()
 
    ' IMPORTANT: if you want to check for some code if need to stop the recording then make sure you are
    ' using Thread.Sleep(1) inside the checking loop, so you have the loop like
    ' Do
    ' Thread.Sleep(1)
    ' While StopButtonNotClicked
 
            Console.WriteLine("Starting capture - Hit a key to stop ...")
 
            Dim s As String = capturer.CurrentVideoCodecName
            Console.WriteLine(String.Format("Using video compressor - {0}", s))
 
            s = capturer.CurrentAudioCodecName
            Console.WriteLine(String.Format("Using audio compressor - {0}", s))
 
            s = capturer.CurrentAudioDeviceLineName
            Console.WriteLine(String.Format("Using audio input line - {0}", s))
 
            Dim i As Integer = 0
            Dim spin As String = "|/-\"
            While Win32Interop._kbhit() = 0
                Console.Write(String.Format(vbCr & "Encoding {0}", spin(i)))
                i = i + 1
                i = i Mod 4
                Thread.Sleep(50)
            End While
 
            capturer.Stop()
 
        ' Release(Resources)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(capturer)
        capturer = Nothing
 
            Console.Write(vbLf & "Done")
            Console.Read()
        Catch generatedExceptionName As Exception
            Console.WriteLine(capturer.LastError)
        End Try
    End Sub
 
    Private Sub usage(ByVal capturer As Capturer)
        Console.WriteLine("Usage : CaptureScreenCSharp.exe <outfilename> [left] [top] [width] [height] [fps] [v-codec] [a-codec] [audioline]" & vbLf)
        Console.WriteLine("[left, top, width, height] is the rectangle to be captured")
        Console.WriteLine("[v-codec] is the index of the video codec in the list to use.")
        Console.WriteLine("[a-codec] is the index of the audio codec in the list to use.")
        Console.WriteLine("[audioline] is the index of the audio line in the list to capture from")
        Console.WriteLine("If either codec is unspecified, it defaults to 'Microsoft Video 1' and 'GSM 6.10'")
        Console.WriteLine("If audioline is unspecified, it uses the microphone")
        Console.WriteLine("To capture the currently playing output, select the stereo, mono or wave mix")
 
        Console.WriteLine("Installed Video Codecs (Note : Not all of them may work)")
 
        For i As Integer = 0 To capturer.VideoCodecsCount - 1
            Dim name As String = capturer.GetVideoCodecName(i)
            Console.WriteLine(String.Format("    {0}. {1}", i, name))
        Next
 
        Console.WriteLine(vbLf & "Installed Audio Codecs (Note : Not all of them may work)")
        For i As Integer = 0 To capturer.AudioCodecsCount - 1
            Dim name As String = capturer.GetAudioCodecName(i)
            Console.WriteLine(String.Format("    {0}. {1}", i, name))
        Next
 
        Console.WriteLine(vbLf & "Audio input lines")
        For i As Integer = 0 To capturer.CurrentAudioDeviceLineCount - 1
            Dim name As String = capturer.GetCurrentAudioDeviceLineName(i)
            Console.WriteLine(String.Format("    {0}. {1}", i, name))
        Next
    End Sub
 
    Private Sub setParams(ByVal args As String(), ByVal capturer As Capturer)
        If args.Length > 1 Then
            Dim left As Integer = Integer.Parse(args(1))
            capturer.CaptureRectLeft = left
        End If
 
        If args.Length > 2 Then
            Dim top As Integer = Integer.Parse(args(2))
            capturer.CaptureRectTop = top
        End If
 
        If args.Length > 3 Then
            Dim width As Integer = Integer.Parse(args(3))
            capturer.CaptureRectWidth = width
        End If
 
        If args.Length > 5 Then
            Dim height As Integer = Integer.Parse(args(5))
            capturer.CaptureRectHeight = height
        End If
 
        If args.Length > 6 Then
            Dim fps As Single = Single.Parse(args(6), CultureInfo.InvariantCulture)
            capturer.FPS = fps
        End If
 
        If args.Length > 7 Then
            Dim vCodec As Integer = Integer.Parse(args(7))
            capturer.CurrentVideoCodec = vCodec
        End If
 
        If args.Length > 8 Then
            Dim aCodec As Integer = Integer.Parse(args(8))
            capturer.CurrentAudioCodec = aCodec
        End If
 
        If args.Length > 9 Then
            Dim aLine As Integer = Integer.Parse(args(9))
            capturer.CurrentAudioDeviceLine = aLine
        End If
    End Sub
 
End Module

  Click here to get your Free Trial version of the SDK

Tutorials:

prev
next